Подтвердить что ты не робот

MySQL не хочет хранить символ юникода

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

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

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

4b9b3361

Ответ 1

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

Ваш персонаж выключен, если эта плоскость.

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

Update:

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

Ответ 2

Сначала: ваше выражение

UTF16 - U + 2B5EE

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

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

Ответ 3

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

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

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