MySQL не хочет хранить символы Unicode - PullRequest
15 голосов
/ 22 апреля 2010

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

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

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

Ответы [ 3 ]

14 голосов
/ 22 апреля 2010

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

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

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

Обновление:

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

2 голосов
/ 22 апреля 2010

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

UTF16 - это U + 2B5EE

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

Теперь, предполагая, что вы имеете в виду кодовую точку, U+2B5EE находится за пределами BMP (первые кодовые точки Unicode 64 КБ), и кажется, что mysql имеет небольшую поддержку или совсем ее не поддерживает . Поэтому я подозреваю, что вам не повезло.

1 голос
/ 07 августа 2012

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

Я недавно написал подробное руководство о том, как перейти с MySQL utf8 на utf8mb4. Если вы выполните все шаги там, все должно работать правильно. Вот прямые ссылки на каждый отдельный шаг в процессе:

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

...