Pregunta

Tengo los datos siguientes: Trollhättan

  • Si imprimo y la configuración de la cabecera para utf-8, entonces esta es la salida en el navegador.

  • Si no estoy creación de la utf-8 en la cabecera, Trollhättan. Sin embargo, cuando estoy almacenar los datos en la base de datos y la comprobación a través phpmyadmin, estoy consiguiendo la cadena siguiente:. Trollhättan

  • Cuando yo soy la creación de la cabecera para utf-8, estoy recibiendo esta cadena: Trollhättan al lado de este Trollhättan.

Dado que la tabla es latin1_swedish_ci, tengo que usar en el UTF-8 mesa?

¿Fue útil?

Solución

Esta es la lista de las intercalaciones de bajo UTF-8

mysql> select * from information_schema.collations where CHARACTER_SET_NAME = 'utf8';
+--------------------+--------------------+-----+------------+-------------+---------+
| COLLATION_NAME     | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN |
+--------------------+--------------------+-----+------------+-------------+---------+
| utf8_general_ci    | utf8               |  33 | Yes        | Yes         |       1 |
| utf8_bin           | utf8               |  83 |            | Yes         |       1 |
| utf8_unicode_ci    | utf8               | 192 |            | Yes         |       8 |
| utf8_icelandic_ci  | utf8               | 193 |            | Yes         |       8 |
| utf8_latvian_ci    | utf8               | 194 |            | Yes         |       8 |
| utf8_romanian_ci   | utf8               | 195 |            | Yes         |       8 |
| utf8_slovenian_ci  | utf8               | 196 |            | Yes         |       8 |
| utf8_polish_ci     | utf8               | 197 |            | Yes         |       8 |
| utf8_estonian_ci   | utf8               | 198 |            | Yes         |       8 |
| utf8_spanish_ci    | utf8               | 199 |            | Yes         |       8 |
| utf8_swedish_ci    | utf8               | 200 |            | Yes         |       8 |
| utf8_turkish_ci    | utf8               | 201 |            | Yes         |       8 |
| utf8_czech_ci      | utf8               | 202 |            | Yes         |       8 |
| utf8_danish_ci     | utf8               | 203 |            | Yes         |       8 |
| utf8_lithuanian_ci | utf8               | 204 |            | Yes         |       8 |
| utf8_slovak_ci     | utf8               | 205 |            | Yes         |       8 |
| utf8_spanish2_ci   | utf8               | 206 |            | Yes         |       8 |
| utf8_roman_ci      | utf8               | 207 |            | Yes         |       8 |
| utf8_persian_ci    | utf8               | 208 |            | Yes         |       8 |
| utf8_esperanto_ci  | utf8               | 209 |            | Yes         |       8 |
| utf8_hungarian_ci  | utf8               | 210 |            | Yes         |       8 |
| utf8_sinhala_ci    | utf8               | 211 |            | Yes         |       8 |
+--------------------+--------------------+-----+------------+-------------+---------+
22 rows in set (0.03 sec)

latin1_swedish_ci pertenece a latin1

mysql> select * from information_schema.collations where COLLATION_NAME = 'latin1_swedish_ci';
+-------------------+--------------------+----+------------+-------------+---------+
| COLLATION_NAME    | CHARACTER_SET_NAME | ID | IS_DEFAULT | IS_COMPILED | SORTLEN |
+-------------------+--------------------+----+------------+-------------+---------+
| latin1_swedish_ci | latin1             |  8 | Yes        | Yes         |       1 |
+-------------------+--------------------+----+------------+-------------+---------+
1 row in set (0.03 sec)

El utf8 más cercano para su cotejo es ID 200

mysql> select * from information_schema.collations where ID = 200;
+-----------------+--------------------+-----+------------+-------------+---------+
| COLLATION_NAME  | CHARACTER_SET_NAME | ID  | IS_DEFAULT | IS_COMPILED | SORTLEN |
+-----------------+--------------------+-----+------------+-------------+---------+
| utf8_swedish_ci | utf8               | 200 |            | Yes         |       8 |
+-----------------+--------------------+-----+------------+-------------+---------+
1 row in set (0.00 sec)

CAVEAT

Es posible que tenga que experimentar con latin1, cambiar el juego de caracteres y la colación de la columna individual de la tabla, o posiblemente ambos. Por lo menos, Latin1 para la exhibición en phpmyadmin.

Se podría tweek y experimentar con lo que toda la base de datos un conjunto de caracteres específico y el cotejo usando ALTER DATABASE .

ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

Asegúrese de hacer una copia de seguridad de la base de datos y cargarlo en un dev / DB puesta en escena y luego ejecutar ALTER DATABASE contra dev / puesta en escena.

Otros consejos

Es necesario asegurarse de que cuando se está "almacenando los datos en la base de datos", el cliente que su uso está utilizando UTF-8. Y después colocar el encabezado HTTP a UTF-8 completa la ida y vuelta.

La sorpresa es que no importa mucho lo que el conjunto de caracteres se utiliza en la base de datos (aunque bien podría ser conveniente para que eso sea UTF-8 también).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top