我正在用python做一些脚本。 我创建一个保存在文件中的字符串。 这个字符串有很多数据,来自目录的树状结构和文件名。根据convmv的介绍,我所有的树状结构都是UTF-8。
我想将所有内容都保留在UTF-8中,因为之后将其保存在MySQL中。现在,在UTF-8的MySQL中,我遇到了一些字符问题(例如é或è-我是法语)。
我希望python始终将字符串用作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!
当我执行时,这是答案:SHOW variables LIKE 'char%'
编辑:我发现在我的档案中口音写得很好。 创建此文件后,我将其读取并将其写入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')
很好地显示在文件中的Artiste会将错误写入BDD。问题是什么 ?