LINUX.ORG.RU

mySQL преобразование latin1 utf8.

 , ,


0

1

У таблицы стоит сравнение utf8_general_ci. При записи данных через скрипт они записались и работают как latin1. То есть если поставить в mysql SET NAMES 'latin1'; то кодировка в норме. В общем проблема в том, что из за этого не работает lower() преобразование. И все регистрозависимо. Мне надо преобразовать в utf8 и чтобы было регистронезависимо. Как это сделать?

★★

Последнее исправление: CYB3R (всего исправлений: 1)

А реальная кодировка данных в таблице какая?

mysqldump -u user -ppassword --add-drop-table --default-character-set=latin1 database > dump.sql
iconv -f {реальная кодировка} -t utf-8 dump.sql > dump1.sql
sed -e 's/latin1/utf8/g' dump1.sql > dump.sql
rm -f dump1.sql
mysql -u user -ppassword --default-character-set=utf8 database < dump.sql
r_asian ★☆☆
()

сравнение utf8_general_ci

А кодировка-то какая?

SET NAMES 'latin1';

Какая-то прога заполняет БД данными? Пропиши у неё в конфиге правильную кодировку. А имеющиеся данные можно поробовать конвертнуть сначала в binary, потом в нужную.

vahtu
()
Ответ на: комментарий от Bupyc

У меня, например, было так. В древнюю таблицу с кодировкой по-умолчанию latin1 писались древней прогой данные в cp1251. Естественно, это порождало глюки с некоторыми буквами, да и непорядок. Решилось сменой character set'а сначала на binary (чтоб mysql ничего не конвертировал), потом в правильную. alter table t change c character set binary/нужная, как-то так. Но это с однобайтовыми кодировками. Как с utf не знаю.

vahtu
()
Ответ на: комментарий от vahtu

Что то не получается. В PHPmyadmin изменил сравнение на binary потом обратно на utf8 - никакой реакции.

Bupyc ★★
() автор топика

сделай дамп базы, потом прогони его через iconv и востанови обратно. Но лучше это сделай сначало на тестовой базе

outsider ★★
()
Ответ на: комментарий от r_asian

Да, только вот получилось без iconv. При set latin1 данные уже в нормальном языке. Надо было просто в бэкапе изменить latin1 на utf8 и все нормально возвращается.

Bupyc ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.