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!
To było to !! Dziękuję bardzo! –