sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

¿Almacenando datos MySQL en fuente kurda?

Qué pasó:

  • tenías datos codificados en utf8 (bueno)
  • SET NAMES latin1 estaba en vigor (predeterminado, pero incorrecto)
  • la columna fue declarada CHARACTER SET latin1 (predeterminado, pero incorrecto)

Mientras INSERTed los datos, se convirtió a latin1, que no tiene valores para los caracteres árabes (kurdo/farsi/etc), por lo que los signos de interrogación los reemplazaron.

La cura (para futuros INSERTs) ):

  • datos codificados en utf8 (bueno)
  • mysqli_set_charset('utf8') (o lo que su cliente necesite para establecer el CHARACTER SET )
  • verifique que la(s) columna(s) y/o la tabla por defecto sean CHARACTER SET utf8
  • Si está visualizando en una página web, <meta...utf8> debe estar cerca de la parte superior.

La discusión anterior es sobre CHARACTER SET , la codificación de caracteres. Ahora un consejo sobre COLLATION , que se utiliza para comparar y clasificar.

Para comprobar que los datos se almacenan correctamente, SELECT col, HEX(col)... .
ه‌رچوون debería volver D987E2808CD8B1DA86D988D988D986
Los caracteres árabes en utf8 tienen el hexadecimal D8xx o D9xx.

(utf8mb4 funciona tan bien como utf8; cualquiera funciona para árabe.)

Malas noticias:Los datos que se insertaron y se convirtieron en '???' no se puede recuperar.