Я делаю несколько скриптов в python. Я создаю строку, которую я сохраняю в файле. В этой строке было много данных, поступающих из арсенала и имен файлов каталога. Согласно convmv, все мои arborescence находятся в UTF-8.
Я хочу сохранить все в UTF-8, потому что я сохраню его в MySQL после. Пока что в MySQL, который находится в UTF-8, у меня возникла проблема с некоторыми символами (например, é или è - I'am French).
Я хочу, чтобы python всегда использовал строку как UTF-8. Я прочитал некоторую информацию в Интернете, и мне это понравилось.
My script начните с этого:
#!/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!
И когда я выполняю, вот ответ: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 2171: ordinal not in range(128)
Изменить:
Я вижу, что в моем файле акцент хорошо написан. После создания этого файла я прочитал его, и я напишу его в MySQL.
Но я не понимаю, почему, но у меня проблемы с кодировкой.
Моя база данных MySQL находится в utf8 или кажется SQL-запросом SHOW variables LIKE 'char%'
возвращает мне только utf8 или двоичный файл.
Моя функция выглядит так:
#!/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')
И артист, который хорошо отображается в файле, плохо записывается в BDD. В чем проблема?