2012-06-30 2 views
0

У меня есть Wordpress сайта, который случайным образом показывает ошибку вида:Wordpress сайт: ошибка кодирования случайных символов

WordPress database error: [Incorrect string value: '\xF0\x9F\x92\x97\xF0\x9F...' for column 'option_value' at row 1] UPDATE `wp_options` SET `option_value` = 'a:95:{ 

Это заполнитель сайт; данные были экспортированы из существующего в реальном времени с использованием PhpMyAdmin в файл .sql. Я подозреваю, что есть какие-то проблемы с кодировкой символов? Я экспортировал все, что было «по умолчанию», а также UTF8. В импортированной базе данных я пробовал кодировку и сопоставление символов как UTF8 (в настоящее время она), а также «Latin1 ISO8899« Западная Европа »и« utf_general_ci »в качестве кодирования и сопоставления, соответственно, но не повезло.

Я заметил, что ошибка возникает, когда я перехожу на сайт после интервала.

Что я могу сделать? Спасибо!

ответ

2

Я недавно написал a detailed guide on how to switch from MySQL’s utf8 to utf8mb4. Если вы выполните шаги там, все должно работать правильно. Вот прямые ссылки на каждый отдельный шаг в процессе:

+0

Матиас, да, обновление MySQL Server было у меня в голове, но потом мы узнали, что один из Word Press Plugin (что-то делать с отслеживанием пользователей) был единственным, кто вызывал проблемы. Мы удалили это, и проблема исчезла. Ваш «ответ» по-прежнему кажется очень хорошим вариантом для наших нужд. – IrfanClemson

1

Проблема может быть несоответствием кодирования. utf8 может хранить символы до 3 байтов, utf8mb4 может хранить символы до 4 байтов. Я думаю, что данные в вашем файле .sql содержат редкий символ, не поддерживаемый utf8. Попробуйте импортировать файл .sql заново, но установите кодировку в utf8mb4. Некоторое время назад у меня была такая же проблема в Joomla.

+0

Хорошо. Попытка, если это вариант ... Спасибо! – IrfanClemson

+0

Не вариант. Вот DDL: CREATE DATABASE 'XXXXXXX' CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; (Может быть, я могу сделать заявление «alter», чтобы попробовать UTf8mb4. Или может попытаться изменить столбец «option_value» из Longtext на что-то еще? Спасибо. – IrfanClemson

+0

Я бы попытался изменить его на ... CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci'. – afaf12

0
 
I encountered the same problem today. 
After tried many times, I found out the reason and fix it at last. 
For applications that store data using the default MySQL character set and collation (latin1, latin1_swedish_ci), so you need to specify the character set and collation to utf8/utf8_general_ci when your create your database or table. 
e.g.: 
     $sql = "CREATE TABLE " . $table_name . " (
     id mediumint(9) NOT NULL AUTO_INCREMENT, 
     bookname varchar(128) NOT NULL, 
     author varchar(64) NOT NULL, 
     PRIMARY KEY (id), 
     KEY (bookname) 
     )CHARACTER SET utf8 COLLATE utf8_general_ci;"; 

Reference: 
《mysql create table problem? SOLVED!!!!!!!!!!!》 
http://forums.mysql.com/read.php?121,193883,193883 
《10.1.5. Configuring the Character Set and Collation for Applications》 
http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html 

Hoping this can help you. 
Смежные вопросы