Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Пролюбил кодировку MySQL (https://forum.antichat.xyz/showthread.php?t=174913)

ntldr 31.01.2010 00:34

Пролюбил кодировку MySQL
 
Дело было так. Когда я взял хост там была latin1, сервер писал в базу с кодировкой цп1251. Потом я "перевел" как мне казалось, в utf8_general_ci. Но в действительности оно только сделала из нормального цп1251, битый цп1251, то есть приписала лишний байт к нему. То есть сейчас символы в базе хранятся так:
1 левый байт - 1 цп1251'шный

В общем как обычно поступают в подобных случаях?

mailbrush 31.01.2010 00:41

Восстанавливать БД из дампа, если таковой был.

ntldr 31.01.2010 00:57

Цитата:

Сообщение от mailbrush
Восстанавливать БД из дампа, если таковой был.

меня интересуют способы фикса такой ломанной кодировки. Ведь информация то цела, просто немного обфусцирована ;)

Gifts 31.01.2010 01:29

ntldr Вернуть обратно latin1 не пробовали (теми же действиями, которыми превращали в utf8)? Такое кривое преобразование произошло из-за того, что однобайтовая кодировка latin1 соответствует как раз утф в виде "левый байт"+байт latin1. Обратное преобразование должно пройти нормально

Не забудьте сохранить текущий дамп ^^

ntldr 31.01.2010 05:29

Цитата:

Сообщение от Gifts
ntldr Вернуть обратно latin1 не пробовали (теми же действиями, которыми превращали в utf8)? Такое кривое преобразование произошло из-за того, что однобайтовая кодировка latin1 соответствует как раз утф в виде "левый байт"+байт latin1. Обратное преобразование должно пройти нормально

Не забудьте сохранить текущий дамп ^^

да, в принципе получилось, но только на отдельной таблице. Всю базу не получается перекодировать :(

imajo.ati 02.02.2010 00:33

Цитата:

Сообщение от ntldr
да, в принципе получилось, но только на отдельной таблице. Всю базу не получается перекодировать :(

а возможно ли текстовый дамп бд перекодировать скриптом? к примеру по регулярному выражению найти все места `field`= 'wrong_data' и с wrong_data сделать манипуляцию?

ntldr 02.02.2010 14:23

Цитата:

Сообщение от imajo.ati
а возможно ли текстовый дамп бд перекодировать скриптом? к примеру по регулярному выражению найти все места `field`= 'wrong_data' и с wrong_data сделать манипуляцию?

не понял мысли, но зато у меня появилась идея. Написать скрипт который будет делать селект, затем иконв и апдейт в новую базу. Попробую так

ntldr 02.02.2010 19:43

в общем у меня получилось из mysql выдрать дамп в чистом цп1251 и перевести его в utf-8. проверял браузером)) он все верно отображал в utf-8. Ho при импорте дампа через утилиту mysql - получаются "иероглифы". Втф?

Gifts 02.02.2010 19:53

ntldr При создании таблиц из дампа - указана неправильная кодировка.
Код:

CREATE TABLE `dedyki` (
тратата описание таблицы
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


ntldr 02.02.2010 20:02

Цитата:

Сообщение от Gifts
ntldr При создании таблиц из дампа - указана неправильная кодировка.
Код:

CREATE TABLE `dedyki` (
тратата описание таблицы
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


дело в том что при создании из дампа у меня уже стоял utf8.
Мб играет роль некое "Сопоставление соединения с MySQL:" которое равно utf8_unicode_ci заместо utf8_general_ci?


Время: 11:38