2012-07-13 6 views
9

Jestem na ścieżce uczenia się więcej o mysqli i wszystkich to ekscytujące rzeczy, ale wkrótce się zablokuję.mysql dostarczający "Nie można zainicjować zestawu znaków utf-8 (ścieżka:/usr/share/mysql/charsets /)" błąd, nie ma pliku utf8.xml tam

Mam lokalny serwer w moim debian box. Jest aktualny, ma zainstalowany i działający php i mysql. Szukałem aby dowiedzieć się nieco więcej na mysqli i jak próbowałem poniższy kod:

<?php 

$db = new mysqli('localhost', 'userdb', 'pwuserdb', 'db'); 

if(!$db->set_charset('utf-8')) { 
    printf("Error setting the character set utf-8: %s\n", $db->error); 
} else { 
    printf("Current character set is: %s\n", $db->character_set_name()); 
} 

print_r($db->get_charset()); 

?> 

ja, ku mojemu zaskoczeniu, otrzymuję następujący komunikat, gdy odwiedzając stronę: Error setting the character set utf-8: Can't initialize character set utf-8 (path: /usr/share/mysql/charsets/) stdClass Object ([charset] => latin1 [collation] => latin1_swedish_ci [dir] => [min_length] => 1 [max_length] => 1 [number] => 8 [state] => 801 [comment] => cp1252 West European)

I pomyślałem sobie, że to jest logiczne bo nie ustawić UTF-8 jako standardowy zestaw znaków mysql więc skończyłem z następującymi ustawieniami w pliku my.cnf:

dla [mysqld]

default-character-set=utf8 

do [client]

default-character-set=utf8 

również rejestrowane w mysql z linii polecenia i prowadził ALTER DATABASE db CHARSET=utf8;

również przeładować mysql z linii poleceń, jak również apache. Patrząc jak rzeczy dzieje się w mysql, prawie wszystko wygląda w porządku:

mysql> SHOW VARIABLES LIKE 'character_set%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | utf8      | 
| character_set_connection | utf8      | 
| character_set_database | utf8      | 
| character_set_filesystem | binary      | 
| character_set_results | utf8      | 
| character_set_server  | utf8      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
8 rows in set (0.00 sec) 

Ale ze względu na fakt, że wydaje się, że MySQL nie można zlokalizować pliku utf8, sprawdziłem dla pliku utf8.xml w folderze /usr/share/mysql/charsets/ i nie ma takiego. W pliku Index.xml w tym katalogu znajduje się wzmianka o utf8 na liście zestawów znaków, ale przypuszczam, że problem wynika z braku pliku xml w katalogu.

Dla celów informacyjnych, moje ustawienia regionalne systemu to UTF8 (en i pl) i nie rozumiem, dlaczego plik utf8.xml nie znajduje się w katalogu, ponieważ nie przeglądałem tego katalogu ani jego zawartości w ogóle.

Wszelkie pomysły/porady/zalecenia są mile widziane.

Z góry dziękuję!

Pozdrawiam!

Odpowiedz

18

Próbowałaś

if(!$db->set_charset('utf8')) { 

bez deski rozdzielczej?

ponieważ wszystkie twoje badania na twoim systemie wskazują na utf8 zamiast utf-8;)

+0

To było to !! Dziękuję bardzo! –