2012-07-13 11 views
9

estoy en el camino de aprender más sobre mysqli y todos esas cosas emocionantes, pero me bloquean bastante pronto.MySQL entrega de un 'no se puede inicializar el juego de caracteres UTF-8 (ruta:/usr/share/mysql/juegos de caracteres /)' error, no hay ningún archivo utf8.xml no

Tengo un servidor local en mi caja Debian. Está actualizado, tiene php y mysql instalados y funcionando sin problemas. que estaba buscando para aprender un poco más en mysqli y como he intentado lo siguiente código:

<?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()); 

?> 

estaba yo, para mi sorpresa, para obtener el siguiente mensaje, al visitar la página: 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 dije a mí mismo que es lógico ya que no se estableció UTF-8 como el juego de caracteres estándar de MySQL por lo completé con la siguiente configuración en el archivo my.cnf:

para [mysqld]

default-character-set=utf8 

para [client]

default-character-set=utf8 

también me conecté a MySQL desde la línea de comandos mysql y corrí ALTER DATABASE db CHARSET=utf8;

también volví a cargar desde la línea de comandos, así como Apache. Al mirar cómo las cosas están sucediendo en MySQL, casi todo se ve bien:

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) 

embargo, debido al hecho de que parece que MySQL no puede localizar el archivo UTF-8, he comprobado para un archivo utf8.xml en la carpeta /usr/share/mysql/charsets/ y no hay uno En el archivo Index.xml de este directorio aparece la mención de utf8, en la lista de los conjuntos de caracteres pero supongo que el problema proviene del hecho de que el archivo xml no se encuentra en el directorio.

Solo para información, las configuraciones regionales de mi sistema son UTF8 (en y pl) y no puedo entender por qué el archivo utf8.xml no está en el directorio, ya que no he estado haciendo tonterías con este directorio o su contenido en absoluto.

Cualquier idea/consejo/recomendación es bienvenida.

¡Gracias de antemano!

¡Salud!

Respuesta

18

hicieron intenta

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

sin el guión?

ya que toda su investigación sobre su sistema apunta a utf8 en lugar de utf-8;)

+0

Eso fue todo !! ¡Muchísimas gracias! –

Cuestiones relacionadas