Как вставить символ utf-8 mb4 (эмодзи в ios5) в mysql?
Я использую 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 ответа
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 убедитесь, что вы находитесь на компьютере, который может отображать смайлики, и запустите
SET NAMES utf8mb4
перед выполнением любых запросов.
Как только каждый уровень вашего приложения сможет поддерживать новые символы, вы сможете использовать их без каких-либо повреждений.
Я недавно написал подробное руководство о том, как перейти с MySQL utf8
в utf8mb4
, Если вы выполните все шаги там, все должно работать правильно. Вот прямые ссылки на каждый отдельный шаг в процессе:
- Шаг 1. Создайте резервную копию
- Шаг 2: Обновите сервер MySQL
- Шаг 3: Изменить базы данных, таблицы и столбцы
- Шаг 4. Проверьте максимальную длину столбцов и индексных ключей.
- Шаг 5: Изменить наборы символов подключения, клиента и сервера
- Шаг 6: Ремонт и оптимизация всех таблиц
Надеюсь это поможет.