Pregunta

Tengo una pequeña aplicación ajax construida con php.

Utilizando phpMyAdmin, configuré una base de datos mysql en utf-8, e importé un archivo de texto que contenía datos utf-8.

Esto funcionó bien en una máquina Windows con easyphp, después de agregar character-set-server = utf8 y default-character-set = utf8 al archivo my.cnf.

Ahora he intentado mover esto a un servidor de producción donde no tengo acceso al archivo de configuración y no se muestran caracteres como diéresis.

¿Hay algo que se pueda configurar en el código php (no en el archivo de configuración) para arreglar esto, o algún comando que pueda darle a mysql?

Intenté ALTER DATABASE vweb_50 SET DE CARACTERES POR DEFECTO utf8 COLLATE utf8_bin con phpMyAdmin para probar desde utf8_general_ci pero no hizo ninguna diferencia.

¿Fue útil?

Solución

Hay un par de cosas que hacer aquí, y no estoy seguro de entender su problema correctamente, pero si lo hago, creo que la mayoría de ellos se pueden abordar con las funciones de PHP utf8_encode y utf8_decode :

  • utf8_encode
    • Codifica una cadena ISO-8859-1 a UTF-8
  • utf8_decode
    • Esta función decodifica datos, se supone que están codificados en UTF-8, según ISO-8859-1.

Además, consulte htmlentities si es necesario.

Otros consejos

Si usa utf-8 en toda la aplicación (lo cual recomendaría), no necesita las funciones utf8_encode / decode. ¿Ha verificado en qué codificación se sirve su página? Probablemente el servidor esté configurado para enviar iso-8859-1 como juego de caracteres, mientras que su entorno de prueba envía utf-8. Establezca la codificación con un encabezado Content-Type:

header("Content-Type: text/html; charset=utf-8");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top