我在Python做一些脚本。 我创建一个字符串,我保存在一个文件中。 这串了大量的数据,从目录树状结构和文件名来。 据convmv,我所有的树状结构是UTF-8。
我希望把一切都在UTF-8,因为我将在MySQL后保存。 现在,在MySQL,这是UTF-8,我得到了一些问题,一些字符(如e或E - 我'法语)。
我想那蟒蛇总是使用字符串作为UTF-8。 我看了网上的一些信息,我也这样。
我的脚本具有此开始:
#!/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。 问题是什么 ?