python: 中文字符串乱码的问题

一、问题背景:
从线上数据库读出来的数据中有中文数据,读取数据库的时候,选择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的格式

posted @ 2016-03-04 22:02  糯米团子syj  阅读(259)  评论(0)    收藏  举报