轉換很好轉,就直接是
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()
