一、问题背景:
从线上数据库读出来的数据中有中文数据,读取数据库的时候,选择utf8格式读取。
向文件中写入的时候,会报错:
Traceback (most recent call last):
File "getHighriskList.py", line 36, in <module> writeIntoFile("./cntest.txt", context)
File "getHighriskList.py", line 16, in writeIntoFile fid.write(test+'\t')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)
一开始看到网上的一些解决方案,说是通过import codec这个包来解决,结果引入了以后完全不能解决问题。
这里mark一下,codec这个包是没有用的,被坑惨了。但是至于为什么没有用,还需要再研究。
这里直接打开文件,并在写入的时候对数据进行一个编码转换就可以了。
def writeIntoFile(filename,context):
fid = open(filename, 'w')
for line in context:
wstr = ''
for data in line:
if type(data) is unicode:
test = data.encode("utf-8")
fid.write(test+'\t')
else:
fid.write(str(data)+'\t')
fid.write("\n")
fid.close()
关键是这里的:
test = data.encode("utf-8")
将字符转换成utf-8的格式