Unicode dan Pengekodan dalam Python dan MySQL
Pengekodan dan Unikod boleh menjadi isu yang mencabar untuk ditangani apabila antara muka antara Python dan MySQL. Ini benar terutamanya jika anda menggunakan data yang mengandungi aksara bukan ASCII.
Masalahnya
Ralat yang anda hadapi:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 204-230: ordinal not in range(256)
menunjukkan bahawa pustaka Python MySQLdb cuba mengekod data anda menggunakan codec 'latin-1', yang tidak boleh mengendalikan aksara Unicode di luar julat 0-255.
Penyelesaian
Terdapat dua pendekatan utama untuk menyelesaikan isu ini:
1. Kendalikannya dari Bahagian Pangkalan Data
ALTER TABLE yahoo_questions CONVERT TO CHARACTER SET utf8;
import mysql.connector cnx = mysql.connector.connect(host='localhost', user='user', password='password', database='db_name', charset='utf8')
2. Kendalikannya dari Bahagian Python
import chardet data = data.encode('utf-8')
import MySQLdb conn = MySQLdb.connect(host='localhost', user='user', password='password', db='db_name', charset='utf8')
Kesimpulan
Dengan mengendalikan Unicode dan pengekodan dengan betul, anda boleh memastikan data dimasukkan ke dalam dan diambil daripada pangkalan data MySQL anda tanpa ralat .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan UnicodeEncodeError Apabila Menggunakan Python dan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!