首页 > 代码库 > Python的utf-8转换成unicode再写入文本

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

转换很好转,就直接是

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再写入文本