码迷,mamicode.com
首页 > 编程语言 > 详细

Python的utf-8转换成unicode再写入文本

时间:2017-03-15 13:32:06      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:text   min   ror   blog   写入文本   转换   codec   har   name   

转换很好转,就直接是

text.decode(utf-8)

之前import chardet,

chardet.detect(text)

看一下原本是什么格式,原本的是utf-8-sig,就用这个decode。

 

问题是写入的时候出现了问题,一直会出现

UnicodeEncodeError: ascii codec cant encode character u\xa0 in position 20: ordinal not in range(128)

类似这样的错误,去问了Song才知道utf-16就是unicode???然后是带BOM的,而且还要以‘wb‘写入,于是我回去直接用utf-16encode就好了……

open(filename,wb).write(newText.encode(utf-16))

此外不知道为啥,在terminal里可以直接运行,写在py里就会报错???虽然结果还是改成了unicode???陷入沉思……

 1 import os
 2 
 3 def convert(filename):
 4     raw = open(filename,r).read()
 5     try:
 6         newRaw = raw.decode(utf-8-sig)
 7         raw = open(filename,wb).write(newRaw.encode(utf-16))
 8         raw.close()
 9     except:
10         print(filename)
11 
12 
13 def main():
14     fileDir = "C:"+os.sep+"Users"+os.sep+"xxx"+os.sep+"Desktop"+os.sep+"xxx"
15     for root,dirs, files in os.walk(fileDir):
16         for file in files:
17             convert(os.path.join(root, file))
18     os.system("pause")
19 
20 if __name__ == __main__:
21     main()

 

Python的utf-8转换成unicode再写入文本

标签:text   min   ror   blog   写入文本   转换   codec   har   name   

原文地址:http://www.cnblogs.com/shadowhu/p/6553726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!