首页 > 代码库 > Python的utf-8转换成unicode再写入文本
Python的utf-8转换成unicode再写入文本
转换很好转,就直接是
text.decode(‘utf-8‘)
之前import chardet,
chardet.detect(text)
看一下原本是什么格式,原本的是utf-8-sig,就用这个decode。
问题是写入的时候出现了问题,一直会出现
UnicodeEncodeError: ‘ascii‘ codec can‘t 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再写入文本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。