Конвертировать латынь1 в UTF8 - PullRequest
6 голосов
/ 08 марта 2011

У меня есть БД - с таблицей статей.

Я хочу преобразовать заголовок и поле содержимого в utf8 сейчас - все данные выглядят так: פורטל רעל × ×¤×ª×— רשמית! Я хочу, чтобы он стал нормальным еврейским персонажем.

Спасибо

Ответы [ 5 ]

8 голосов
/ 08 марта 2011

если вам нужно преобразовать всю базу данных, вы можете сделать резервную копию в виде файла databaseback.sql, а затем сформировать командную строку iconv -f latain -t utf-8 < databaseback.sql > databaseback.utf8.sql

Вы можете использовать http://www.php.net/manual/en/function.iconv.php
конвертировать каждую строку в php, если у вас нет доступа к командной строке

и, наконец, не забудьте преобразовать параметры сортировки каждого поля в phpmyadmin, тогда вы можете легко восстановить utf8 обратно

обновление

если у вас есть iconv is not recognized, это означает, что у вас не установлена ​​iconv

гораздо более простое решение: Перенос данных MySQL в Unicode

http://daveyshafik.com/archives/166-migrating-mysql-data-to-unicode.html

7 голосов
/ 29 января 2013

Следующая функция MySQL вернёт правильную строку utf8 после двойной кодировки:

CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8)

Может использоваться с оператором UPDATE для исправления полей:

UPDATE tablename SET field = CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8);
5 голосов
/ 08 марта 2011

Вы можете сделать mysqldump из этой базы данных.Затем загрузите что-то вроде Notepad ++, откройте файл дампа, преобразуйте его в UTF8, затем замените через файл все кодировки в utf-8, включая первый оператор SET NAMES.

Если вы создаете дамп в файл через phpMyAdmin (по умолчаниюнастройки) используйте выходной файл с кодировкой ISO-8859-1 вместо UTF-8, как вы можете видеть по умолчанию.

4 голосов
/ 08 марта 2011

Вы можете написать небольшой скрипт php, который выполняет преобразование.См. http://www.php.net/manual/en/function.mb-detect-encoding.php и http://php.net/manual/en/function.mb-convert-encoding.php Вот как я это сделал.

И не забывайте использовать строгий режим!http://www.php.net/manual/en/function.mb-detect-encoding.php#102510

В псевдокоде это будет что-то.как это:

str = getDataAsString()
if(!isUTF8(str)) {
  str = convert2UTF8(str)
}
saveStr2DB()
2 голосов
/ 08 марта 2011

попробуй

ALTER TABLE `tablename` CHANGE `field_name` `field_name` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...