Как вставить символ utf-8 mb4 (emoji в ios5) в mysql?

Я использую mysql 5.5.10, а его character_sets -

| 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 для emoji iOS5. Они представлены кодом 4byte.

но когда я вставил 3 смайлика emojis,'???- находится в mysql.

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

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

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

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

2 ответов


4 байтовые символы Юникода еще не широко используются, поэтому не каждое приложение полностью поддерживает их. 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 убедитесь, что вы находитесь на машине, которая может отображать emoji, и запустите SET NAMES utf8mb4 перед выполнением любых запросов.

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