Как вставить символ utf-8 mb4 (эмодзи в ios5) в mysql? - PullRequest
55 голосов
/ 19 октября 2011

Я использую mysql 5.5.10, и его наборы символов

| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8mb4_general_ci         |
| collation_database       | utf8mb4_general_ci         |
| collation_server         | utf8mb4_general_ci         |

Я изменил utf8mb4 с utf8 для эмодзи iOS5.Они представлены 4-байтовым кодом.

Но когда я вставил 3 смайлика, «???»находится в mysql.

Они 3F 3F 3F (Hex).

Я могу хранить смайлики iOS4 хорошо, но не iOS5.

Как я могу хранить смайлики iOS5?

Пожалуйста, помогите мне.

Ответы [ 2 ]

93 голосов
/ 13 ноября 2011

4-байтовые символы Unicode еще не получили широкого распространения, поэтому не все приложения полностью поддерживают их.MySQL 5.5 прекрасно работает с 4-байтовыми символами при правильной настройке - проверьте, могут ли другие ваши компоненты работать с ними.

Вот еще несколько вещей, которые нужно проверить:

  • Убедитесь, что наборы символов и текстовые поля всех ваших таблиц по умолчанию преобразованы в utf8mb4, в дополнение к настройке наборов символов клиента и сервера, например ALTER TABLE mytable charset=utf8mb4, MODIFY COLUMN textfield1 VARCHAR(255) CHARACTER SET utf8mb4,MODIFY COLUMN textfield2 VARCHAR(255) CHARACTER SET utf8mb4; и т. Д.

    Если ваши данные уже находятся вНабор символов utf8, он должен преобразоваться в utf8mb4 на месте без каких-либо проблем.Как всегда, сделайте резервную копию ваших данных, прежде чем пытаться!

  • Также убедитесь, что уровень вашего приложения устанавливает для символа своих соединений с базой данных значение utf8mb4.Дважды проверьте, что это действительно происходит - если вы используете старую версию выбранной вами клиентской библиотеки mysql фреймворка, возможно, она не была скомпилирована с поддержкой utf8mb4 и не будет правильно устанавливать кодировку.Если нет, возможно, вам придется обновить или скомпилировать его самостоятельно.

  • При просмотре ваших данных через клиент mysql убедитесь, что вы находитесь на компьютере, который может отображать смайлики, и запуститеa SET NAMES utf8mb4 перед выполнением любых запросов.

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

...