У меня есть БД – с табличными статьями.
Я хочу преобразовать заголовок и поле содержимого в utf8 сейчас – все данные выглядят так: פורטל רעל × ×¤×ª×— רשמית!
Я хочу, чтобы он стал нормальным иврите.
благодаря
Вы можете сделать mysqldump из этой базы данных. Затем загрузите что-то вроде Notepad ++, откройте файл дампа, преобразуйте его в UTF8, а затем замените в файле все кодировки на utf-8, включая первый оператор SET NAMES.
Если вы делаете дамп в файл через phpMyAdmin (с настройками по умолчанию), используйте кодировку выходного файла ISO-8859-1 вместо UTF-8, как вы можете видеть по умолчанию.
если вам нужно преобразовать всю базу данных, вы можете поддержать ее как файл 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
Следующая функция MySQL вернет правильную строку utf8 после двойного кодирования:
CONVERT (CAST (CONVERT (поле USING latin1) AS BINARY) ИСПОЛЬЗОВАНИЕ utf8) Его можно использовать с инструкцией UPDATE для исправления полей:
UPDATE tablename Поле SET = CONVERT (CAST (CONVERT (поле USING latin1) AS BINARY) ИСПОЛЬЗОВАНИЕ utf8);
Вы можете написать небольшой скрипт 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
В псевдокоде это будет sth. как это:
str = getDataAsString() if(!isUTF8(str)) { str = convert2UTF8(str) } saveStr2DB()
пытаться
ALTER TABLE `tablename` CHANGE `field_name` `field_name` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL