import codecs f1=codecs.open('items.json', 'r', encoding='utf-8').read().decode("unicode_escape") f=codecs.open('out.txt','wb',encoding='utf-8') print >>f,f1 f.close()
字符编码问题的确是万年的难题。之前我也处理过 R 语言中文乱码的问题,it just drives me crazy!!!!!!!!!!!!!!!!! HOLY SHIT!!!!!!!!!!!!
要么就是这样的错误
UnicodeEncodeError: ‘gbk’ codec can’t encode character u’u200e’ in position 43: illegal multibyte sequence
要么就是可以读取然后就乱码。
我本身环境为UTF-8.
>>> import sys; >>> print(sys.getdefaultencoding()); utf-8
在第一行加上
# -*- coding: utf-8 -*-
将你的PY文件改为UTF-8文件格式,然后就
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
完美解决方案:
BYTES.decode("GBK",'ignore').encode("GBK").decode('UTF-8','ignore')
#总之尼玛你就GBK和UTF-8之间搞来搞起就好了!艹!
EXCEL 乱码问题
可能大家都遇到过,python在输出的csv文件中如果有utf-8格式的中文,那么在使用excel打开该csv文件时,excel将不能够有效识别 出文件中的中文数据,严重时甚至不能够识别出分隔符。那么,要怎样操作才能够让excel识别出utf-8格式的中文呢?方法其实很简单,见以下代码:
- import codecs
- with open('ExcelUtf8.csv', 'w') as f:
- t = u'中国人'
- f.write(codecs.BOM_UTF8)
- f.write('%s,1,3 ' % t.encode('utf-8'))
运行代码,使用excel打开,截图如下:
如果我们屏蔽掉其中的一句代码
- import codecs
- with open('ExcelUtf8.csv', 'w') as f:
- t = u'中国人'
- #f.write(codecs.BOM_UTF8)
- f.write('%s,1,3 ' % t.encode('utf-8'))
再次运行代码,使用excel打开,截图如下:
其中具体的原理,大家可以去百度:BOM了
That which didn't kill me makes me stronger