Борих се с правилния обмен на пълния набор от UTF-8 знаци между Python и MySQL в името на Emoji и други знаци извън кодовата точка U+FFFF.
За да съм сигурен, че всичко работи добре, трябваше да направя следното:
- уверете се, че
utf8mb4
беше използван заCHAR
,VARCHAR
иTEXT
колони в MySQL - прилагане на UTF-8 в Python
- приложете UTF-8 да се използва между Python и MySQL
За да наложите UTF-8 в Python, добавете следния ред като първи или втори ред на вашия Python скрипт:
# -*- coding: utf-8 -*-
За да наложите UTF-8 между Python и MySQL, настройте MySQL връзката, както следва:
# Connect to mysql.
dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True)
# Create a cursor.
cursor = dbc.cursor()
# Enforce UTF-8 for the connection.
cursor.execute('SET NAMES utf8mb4')
cursor.execute("SET CHARACTER SET utf8mb4")
cursor.execute("SET character_set_connection=utf8mb4")
# Do database stuff.
# Commit data.
dbc.commit()
# Close cursor and connection.
cursor.close()
dbc.close()
По този начин не е необходимо да използвате функции като encode
и utf8_encode
.