2010-04-22 2 views
15

Почему MySQL не хранит символ Unicode ? Да, это редкий иероглиф, вы не увидите его в браузере.
UTF16 является U+2B5EEMySQL не хочет хранить символ юникода

Warning: #1366 Incorrect string value: '\xF0\xAB\x97\xAE' for column 'ch' at row 1 

Можно ли сохранить этот символ в MySQL?

+0

Возможно, вы захотите проверить это http://bugs.mysql.com/bug.php?id=14052. – xycf7

ответ

14

MySQL поддерживает только символы базовой многоязычной плоскости (0x0000 - 0xFFFF).

Ваш персонаж не работает, если этот самолет.

Попробуйте хранить синоним вместо :)

Update:

MySQL 5.5.3 и (который не пошел GA пока) не поддерживает дополнительные символы, если вы используете UTF8MB4 encoding.

+0

У вас были проблемы с utf8 в MySQL за несколько дней. Теперь я знаю, почему! Благодаря! – 2012-01-24 12:26:45

2

Первое: ваше заявление

UTF16 является U + 2B5EE

немного неправильно. U+2B5EE - это обозначение для Unicode codepoint, просто целое число - абстрактный код, тогда как UTF16 является кодировкой кодировки (одним из возможных кодировок Unicode, как и UTF-8).

Теперь, предполагая, что вы имеете в виду код, U+2B5EE находится за пределами BMP (первые 64K unicode кодовые точки), и кажется, что mysql имеет little or no support for them. Поэтому я подозреваю, что вам не повезло.

1

Поскольку этот вопрос был опубликован, был выпущен MySQL 5.5.3, который поддерживает кодировку utf8mb4, которая предлагает полную поддержку Unicode. Переключение на эту кодировку вместо utf8 устранит вашу проблему.

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

Я подозреваю, что ваша проблема может быть решена следующим шагом 5. Надеюсь, это поможет!

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