Tôi đang thực hiện một số tập lệnh trong python. Tôi tạo một chuỗi mà tôi lưu trong một tập tin. Chuỗi này có rất nhiều dữ liệu, đến từ arborescence và tên tập tin của một thư mục. Theo convmv, tất cả các arborescence của tôi là trong UTF-8.mã hóa python utf-8
Tôi muốn giữ mọi thứ trong UTF-8 vì tôi sẽ lưu nó trong MySQL sau. Hiện tại, trong MySQL, trong UTF-8, tôi gặp một số vấn đề với một số ký tự (như é hoặc è - I'am tiếng Pháp).
Tôi muốn con trăn đó luôn sử dụng chuỗi như UTF-8. Tôi đọc một số thông tin trên internet và tôi đã làm như thế này.
Kịch bản của tôi bắt đầu với điều này:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def createIndex():
import codecs
toUtf8=codecs.getencoder('UTF8')
#lot of operations & building indexSTR the string who matter
findex=open('config/index/music_vibration_'+date+'.index','a')
findex.write(codecs.BOM_UTF8)
findex.write(toUtf8(indexSTR)) #this bugs!
Và khi tôi thực hiện, đây là câu trả lời: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2171: ordinal not in range(128)
Edit: Tôi thấy, trong tập tin của tôi, giọng đều độc đáo bằng văn bản. Sau khi tạo tập tin này, tôi đọc nó và tôi viết nó vào MySQL. Nhưng tôi không hiểu tại sao, nhưng tôi gặp vấn đề với mã hóa. Cơ sở dữ liệu MySQL của tôi nằm trong utf8 hoặc có vẻ là truy vấn SQL SHOW variables LIKE 'char%'
trả về tôi chỉ utf8 hoặc nhị phân.
chức năng của tôi trông như thế này:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def saveIndex(index,date):
import MySQLdb as mdb
import codecs
sql = mdb.connect('localhost','admin','*******','music_vibration')
sql.charset="utf8"
findex=open('config/index/'+index,'r')
lines=findex.readlines()
for line in lines:
if line.find('#artiste') != -1:
artiste=line.split('[:::]')
artiste=artiste[1].replace('\n','')
c=sql.cursor()
c.execute('SELECT COUNT(id) AS nbr FROM artistes WHERE nom="'+artiste+'"')
nbr=c.fetchone()
if nbr[0]==0:
c=sql.cursor()
iArt+=1
c.execute('INSERT INTO artistes(nom,status,path) VALUES("'+artiste+'",99,"'+artiste+'/")'.encode('utf8')
Và nghệ sĩ đang độc đáo hiển thị trong file viết xấu vào BDD. Vấn đề là gì?
Mã mẫu python của bạn không hợp lệ; có lỗi cú pháp ở ít nhất 2 địa điểm. Bạn có thể sửa những cái đầu tiên được không? –
Bạn có lưu tệp dưới dạng utf-8 chứ không phải tệp ascii không? – QuentinUK