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() 6     newRaw = raw.decode('utf-8-sig')
 7     raw = open(filename,'wb').write(newRaw.encode('utf-16'))
 8     raw.close()11 
12 
13 def main():
14     fileDir = ""
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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM