2010-11-27 3 views
1

Я использую кодировку UTF-8 на своем веб-сайте. В последнее время я храню китайские/испанские/русские имена в своих таблицах MySQL, а затем печатаю их с PHP на странице, сгенерированной с кодировкой UTF-8. Страница работает отлично, и я правильно вижу все письма. Тем не менее, я просто понял, что моя таблица установлена ​​с latin1_swedish_ci charset. Как возможно, что, хотя я сохранил эти имена с помощью кодировки latin1_swedish_ci, обслуживание их на моем сайте с помощью UTF-8 все еще показывает их правильно?Latin1_swedish_ci Кодирование в MySQL

Спасибо!

Joel

ответ

2

Поскольку соединение MySQL все еще использует latin1,
вы должны рассматривать эти данные в UTF-8, но хранить в latin1 среде.

Таким образом, чтобы доказать это,

show variables like '%char%'; 

выше должна вернуть большую часть настроек в latin1

применять

set names utf8; 

И вы увидите все UTF-8 стали с двойным кодированием (искаженный)

1

Вам будет интересна тема: A script to change all tables and fields to the utf-8-bin collation in MYSQL

Они имеют дело с путями исправления тех же вещей, которые вы сделали.

Обратите внимание, что при использовании в первичных ключах размер varchar, закодированный в utf8 count triple, поэтому максимальная длина для одного столбца первичного ключа - varchar (333).

Смежные вопросы