MySQL utf8, ошибки при сохранении смайликов



Я пытаюсь сохранить имена пользователей из службы в моей базе данных MySQL. Эти имена могут содержать смайлики, такие как

461   3  

3 ответов:

character_set_client,_connection и _results все должно быть utf8 чтобы этот торт был съедобным.

что-то, где-то, устанавливает подмножество тех, кто индивидуально. Поройтесь у меня.настройки cnf и phpmyadmin-что-то не устанавливает все три.

если SET NAMES utf8 выполнена, все три установлены правильно.

солнце светило, потому что это только 3 байта -E2 98 80; utf8 достаточно для 3-байтовых кодировок символов Юникода utf8.

вероятно, что ваша служба/приложение подключается к" utf8 "вместо" utf8 " для набора символов клиента. Это зависит от клиентского приложения.

для PHP-приложения см. http://php.net/manual/en/function.mysql-set-charset.php или http://php.net/manual/en/mysqli.set-charset.php

для приложения Python см. https://github.com/PyMySQL/PyMySQL#example или http://docs.sqlalchemy.org/en/latest/dialects/mysql.html#mysql-unicode

кроме того, проверьте, что ваши колонки действительно utf8. Один прямой путь выглядит так:

mysql> SELECT character_set_name FROM information_schema.`COLUMNS`  WHERE table_name = "user"   AND column_name = "displayname";
+--------------------+
| character_set_name |
+--------------------+
| utf8            |
+--------------------+
1 row in set (0.00 sec)

для меня оказалось, что проблема кроется в mysql клиенте.

обновления клиента mysql my.cnf ' s char настройки на сервере, и в результате непреднамеренной настройки символов.

Итак, что мне нужно сделать, это просто добавить character-set-client-handshake = FALSE. Он отключает настройку клиента от нарушения моей настройки char.

my.cnf будет.

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8
...

надеюсь, что это помогает.

Comments

    Ничего не найдено.