Вопрос

У меня есть следующие данные:Trollhättan

  • Если я распечатаю и настраиваю заголовок на utf-8, тогда это выход в браузере.

  • Если я не настраиваю utf-8 в заголовке, Trollhättan. Анкет Однако, когда я храню данные в базе данных и проверяю phpmyadmin, Я получаю следующую строку: Trollhãttan.

  • Когда я настраиваю заголовок на utf-8, Я получаю эту строку: Trollhättan Кроме того Trollhättan.

Поскольку таблица latin1_swedish_ci, мне нужно использовать в таблице UTF-8?

Это было полезно?

Решение

Вот список коллекций в 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 принадлежит латинскому1

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)

Самый близкий UTF8 для вашего сбора - 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)

ПРЕДОСТЕРЕЖЕНИЕ

Возможно, вам придется экспериментировать с Latin1, изменить набор символов и сопоставление отдельного столбца в таблице или, возможно, оба. По крайней мере, используйте Latin1 для отображения в PhpMyAdmin.

Вы можете поэкспериментировать с тем, чтобы сделать всю базу данных определенным набором символов и сопоставлением с использованием Изменять базу данных.

ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

Убедитесь, что вы сделаете резервную копию базы данных и загрузите ее в DEV/Pating DB, а затем запустите ALTER BATABASE против DEV/PETAGING.

Другие советы

Вы должны убедиться, что когда вы "храните данные в базе данных", клиент Вы используете, использует UTF8. Затем установление заголовка HTTP в UTF8 завершает поездку туда и обратно.

Удивительно, что не имеет большого значения, какой набор символов используется в базе данных (хотя это вполне может быть удобно для того, чтобы быть UTF8).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top