Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z mb_detect_encoding - illegal argument
Forum PHP.pl > Forum > Przedszkole
Age1869
Witam, najpierw przedstawię skrypt:

  1. <?php
  2. $f=$_POST['pocz'];
  3. $kod = mb_detect_encoding($f, 'utf-8, iso-8859-2, cp1250');
  4. $pocz = iconv($kod, 'utf-8', $_POST['pocz']);
  5. $cat = $_POST['cat'];
  6. include('../../INCs/config.php');
  7. $polacz = mysql_query("INSERT INTO `baza` (`category`, `pocz`) VALUES ('$cat', '$pocz')", $polaczenie);
  8.  
  9. ?>


Działanie skryptu: w formularzu wpisuję lub wklejam jakiś tekst, w którym mogą być polskie znaki, dane są przesyłane do powyższego skryptu, który ma je dodać do bazy danych. Proste dodanie generuje jednak w mojej bazie (kodowanie utf-8) krzaczki, więc stwierdziłem, że trzeba zadbać o konwersję. Dodałem zatem funkcje mb_detect_encoding i inconv, niestety funkcja mb_detect_encoding wyrzuca błąd, jak wpiszę jej kodowanie windows-1250 lub cp1250.

Błędem tym jest wspomniany w temacie: illegal argument.

Będę wdzięczny za pomoc
morbic
Ale po co?

Nie lepiej w sekcji <head> dać
  1. <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">


A w PHP, zaraz po połączeniu do bazy:
  1. mysql_query('SET NAMES utf8');
Age1869
W head oczywiście jest :-P

A odnośnie SET NAMES, mogę to dodać, jako część mojego zapytania do bazy?
morbic
SET NAMES musi być wywoływane jako osobne zapytanie, zaraz po połączeniu się do bazy (czyli zaraz po mysql_connect() ), przy każdym wywołaniu skryptu. Najlepiej wrzucić to linijka pod linijką.

Informuje to serwer MySQL, że podczas połączenia z bazą, wszystkie dane będą przesyłane w UTF-8. W przeciwnym wypadku, jeśli serwer ma ustawione jako domyślne kodowanie ISO, a Ty nie poinformujesz go, że chcesz przesyłać dane w UTFie, to on przyjmie dane jako ISO i widząc, że ma bazę danych i tabelki w formacie UTF, będzie próbował konwertować dane, co oczywiście kończy się krzakami. No i oczywiście odniesie to skutek do nowo wstawianych danych, te dotychczasowe będą wyświetlane tak samo jak zostały wcześniej wstawione (czyli do kitu wink.gif ).

Temat stary jak świat, jest przyklejony: Temat: MYSQL Polskie znaki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.