python编码问题?

时间:2009-12-02 08:14:26

标签: python

我从source.sql(sql脚本)文件中读取

INSERT INTO `Tbl_abc` VALUES (1111, 2222, 'CLEMENT', 'taya', 'MME', 'Gérant', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4688, 0, NULL, NULL, 'MAILLOT 01/02/09', 'MAILLOT 01/04/09', NULL, NULL);

写入dest.sql并将我的列表格式化

我遇到了编码问题,例如:

Gérant= G\xc3\xa9rant

我在做什么

def DataMigration(dest, source, tbl_name, return_data=True):
    '''      
    '''
    data = []
    for ln in codecs.open(source, 'r', "utf-8").xreadlines():
        replace1 = ln.replace("INSERT INTO `"+tbl_name+"` VALUES (", "")
        replace2 = replace1.replace(");", "")
        list_replace = replace2.split(',')        
        s = list_replace
        data.append(list_replace)

    if return_data == True:
        ouputdata = [d for d in data if d[1] == ' 0' and d[6]==' 0']
        return ouputdata
    if return_data == False:
        return data

我打印 print DataMigration('dest.sql','。source.sql','Tbl_abc',False)

输出

  [['1111', ' 2222', " 'CLEMENT'", " 'taya'", " 'MME'", " 'G\xc3\xa9rant'", ' NULL', ' NULL', ' NULL', ' NULL', ' NULL', ' NULL', ' NULL', ' 4688', ' 0', ' NULL', ' NULL', " 'MAILLOT 01/04/09'", " 'MAILLOT 01/04/09'", ' NULL', ' NULL']]


But My Ouput file still has the problem.Any Could help me ?

3 个答案:

答案 0 :(得分:1)

当您写入.sql文件时,请使用.encode("utf-8")

打开文件

fileObj = codecs.open( "someFile", "r", "utf-8" )

让我们说你看了

data=fileOjb.read()

......对数据做点什么

open("newfile","w").write(data.encode("utf-8"))

答案 1 :(得分:0)

您好检查您的文件.sql的编码可能不是utf-8!

答案 2 :(得分:0)

将您的工作数据存储在Python内部作为Unicode(在读取时使用解码),并始终使用编码写出。

在您的实例中,您需要知道数据库的编码以了解正确的输出编码。