#python #mysql #database #character-encoding #utf8mb4
Вопрос:
Как описано в названии, у меня возникла проблема с вставкой смайликов в базу данных MariaDB с помощью mysql.connector
модуля на python.
Когда я пытаюсь вставить данные, содержащие смайлики, в базу данных с помощью python, все смайлики просто заменяются знаками вопроса. Я также убедился, что смайлики работают на python, выводя их на консоль перед вставкой в базу данных.
Вставка смайликов через phpMyAdmin больше не является проблемой после того, как я изменил параметры сортировки в базе данных на utf8mb4_general_ci
. Таким образом, я мог убедиться, что с базой данных нет проблем.
Если это как-то поможет, данные, которые я вставляю, поступают из API steam и состоят из псевдонимов.
Теперь я хотел бы знать, знает ли кто-нибудь, как я могу решить эту проблему.
Надеюсь, я не забыл ни одной важной информации.
Комментарии:
1. Отличная работа с вашим первым вопросом! Спасибо.
Ответ №1:
Вы правы, что эмодзи представимы в Юникоде. Вы не забыли установить набор символов подключения и параметры сортировки в своей программе на Python?
Что-то подобное может помочь сразу же, как только вы откроете соединение.
cnx = mysql.connector.connect(user='JonaWe', database='test',
use_unicode=True,
charset='utf8mb4,
collation='utf8mb4_general_ci',
etcetera)
cnx.set_charset_collation('utf8mb4', 'utf8mb4_general_ci')
Соединение между Python и MySQL может искажать содержимое utf8mb4 вашего смайлика.
Комментарии:
1. Я не знал, что мне тоже нужно было изменить параметры сортировки кодировки в пайтоне. Я попробовал это и использование
'utf8mb4'
и'utf8mb4_general_ci'
в качестве параметра привело к следующей ошибке:unknown encoding: utf8mb4
. Затем я попытался удалить первый параметр, но без этого он мгновенно разбился.2. Вставка работает сейчас, но как только я пытаюсь выбрать какую-то дату, я получаю неизвестную кодировку: ошибка utf8mb4.