Saltar al contenido

Adición de compatibilidad con UTF-8 al script JS/PHP

La guía paso a paso o código que verás en este post es la resolución más sencilla y válida que encontramos a esta duda o problema.

Solución:

المراكز es Mojibake, o posiblemente “doble codificación”, para المراكز — Por favor, SELECT col, hex(col) ... para ver cuál de estos se parece a:

Mojibake: D8A7D984D985D8B1D8A7D983D8B2

codificación doble: C398C2A7C399E2809EC399E280A6C398C2B1C398C2A7C399C692C398C2B2

Si Mojibake:

  • Los bytes que se almacenarán deben estar codificados en UTF-8. Arregla esto.
  • La conexión al INSERTAR y SELECCIONAR texto debe especificar utf8 o utf8mb4. Arregla esto.
  • La columna debe declararse CHARACTER SET utf8 (o utf8mb4). Arregla esto.
  • HTML debe comenzar con .

Si hay codificación doble: esto se debe a la conversión de latin1 (o lo que sea) a utf8, luego se tratan esos bytes como si fueran latin1 y se repite la conversión.

Más discusión:

Problemas con los caracteres UTF-8; lo que veo no es lo que almacené

Hacer no utilizar el mysql_* interfaz en PHP; cambiar a mysqli_* o interfaces PDO. mysql_* fue eliminado en PHP 5.7.

Si su base de datos es latin1, almacenará caracteres Unicode como caracteres de varios bytes. Si está basado en utf-8, aún almacenará varios caracteres pero se mostrará de una manera más “sensata”.

Si su carácter ر se representa como XYZ (3 bytes), cuando recupere XYZ, el navegador los volverá a ensamblar en una ر visible.

Sin embargo, si su base de datos es utf-8, codificará aún más cada componente, de modo que al final vea XYZ de manera “confiable”. Digamos que X se denota como x1,x2, e Y es simplemente y, y Z es z1,z2,z3, entonces en lugar de ver Ú, que se almacena como XYZ, ahora ve x1x2yz1z2z3, que se muestra como XYZ.

Intente convertir su base de datos a latin1 para al menos confirmar mi teoría. Gracias.

Editar:

No es necesario utilizar una biblioteca utf8 js. Asegúrese de que la codificación de caracteres de su página sea utf8:


Cuando publica los datos, puede codificarlos con encodeURIComponent antes de enviarlos con una solicitud XHR. No estoy seguro de si el sabor jQuery de $.ajax ya hace la codificación.

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *