Saya telah berjuang sendiri dengan pertukaran yang benar dari berbagai karakter UTF-8 antara Python dan MySQL demi Emoji dan karakter lain di luar titik kode U+FFFF.
Untuk memastikan semuanya berfungsi dengan baik, saya harus melakukan hal berikut:
- pastikan
utf8mb4
digunakan untukCHAR
,VARCHAR
, danTEXT
kolom di MySQL - menerapkan UTF-8 dengan Python
- menegakkan UTF-8 untuk digunakan antara Python dan MySQL
Untuk menerapkan UTF-8 dengan Python, tambahkan baris berikut sebagai baris pertama atau kedua skrip Python Anda:
# -*- coding: utf-8 -*-
Untuk menerapkan UTF-8 antara Python dan MySQL, siapkan koneksi MySQL sebagai berikut:
# 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()
Dengan cara ini, Anda tidak perlu menggunakan fungsi seperti encode
dan utf8_encode
.