2015-08-04 4 views
0

Я храню данные, содержащие символы, отличные от A-Z, в базе данных MySQL. Когда хранится символ не A-Z (например, \u201cboard\u201d, который является «доской», появляется как u201cboardu201d), MySQL отбрасывает '\', что делает текст полной нечувствительной связкой букв и цифр, которые невозможно прочитать. Я использую кодировку utf8_general_ci.Почему MySQL отбрасывает '' до кодированных символов utf-8?

Что я делаю неправильно?

+0

MySQL еще не поддерживает юникод литералов, что то, что я назвал бы '\ uxxxx'. –

ответ

0

Решение было явно указать кодировку вместе с учетными данными при подключении к базе данных MySQL. Я использую Python так что в моем случае я должен был сделать это следующим образом:

(host="host", user="user", passwd="pass", db="mydb", charset='utf8') 
0

обратной косой черты специальный символ для MySQL, попробуйте использовать двойной обратный слэш вместо («\\» вместо «\»)

+0

Спасибо за ваш ответ. Да, вы правы, но когда я храню данные, он автоматически кодирует его с помощью одиночного '\', но я предполагаю, что каждый раз меняю его на «\\» и сохраняю. MySQL убирает один '\', но затем, когда я его возвращаю, он снова возвращает '\\' перед символом, который я могу снова заменить на '\', но есть ли еще более элегантное решение для этого? – yellowbedsheet

0

Не храните \ и ... вещи, магазин utf8.

Если вы едете из PHP, обратите внимание на дополнительные ARG:

$t = json_encode($s, JSON_UNESCAPED_UNICODE); 
+0

Я использую кодировку Python «utf-8». – yellowbedsheet

+0

Кодирование отсюда происходит; это не utf8. –

Смежные вопросы