Tôi đã tự đấu tranh với việc trao đổi chính xác đầy đủ các ký tự UTF-8 giữa Python và MySQL vì lợi ích của Biểu tượng cảm xúc và các ký tự khác ngoài mã U + FFFF.
Để đảm bảo rằng mọi thứ hoạt động tốt, tôi phải làm như sau:
- đảm bảo rằng
utf8mb4
đã được sử dụng choCHAR
,VARCHAR
vàTEXT
các cột trong MySQL - thực thi UTF-8 bằng Python
- thực thi UTF-8 để được sử dụng giữa Python và MySQL
Để thực thi UTF-8 trong Python, hãy thêm dòng sau làm dòng đầu tiên hoặc dòng thứ hai trong tập lệnh Python của bạn:
# -*- coding: utf-8 -*-
Để thực thi UTF-8 giữa Python và MySQL, hãy thiết lập kết nối MySQL như sau:
# 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()
Bằng cách này, bạn không cần sử dụng các chức năng như encode
và utf8_encode
.