2014-09-21 39 views
0

我有一個文件(從www上的某處下載)在CP819中編碼,並且想要讀取它,然後進一步處理UTF-8中的數據。嘗試了我可以在這裏和其他地方找到的所有例子,沒有任何工作。讀取cp819編碼的文件

最遠的我可以得到:

with codecs.open(INFIL, mode='rb',encoding='cp819') as INPUT: 
DUMMY=INPUT.readline() 
print (DUMMY) 

這給了我

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 5: ordinal not in range(128) 

在輸入文件偏移5是第一個字符上面ASCII 128:在\ xe8應該要解碼「E」。

發現了幾頁關於此錯誤信息,嘗試了我發現的所有建議,沒有任何幫助。

在Ubuntu 14.04.1 LTS

回答

0

使用Python 2.7.6,您可以明確地編碼使用unicode.encode Unicode字符串:

with codecs.open(INFIL, encoding='cp819') as f: 
    line = line.readline() 
    print line.encode('utf-8') 

另一種方式是與環境PYTHONIOENCODING=utf-8集調用Python程序。

PYTHONIOENCODING=utf-8 python /path/to/python_program.py 
+0

好吧,就是這樣。 – Karlchen9 2014-09-21 08:17:49

+0

嗯,這是我的第一個問題的一個很好的答案,但我立即遇到了一個新的問題。不確定是否繼續在這裏或開始一個新的問題 - 問題仍然與解碼輸入文件有關。 – Karlchen9 2014-09-21 08:41:05

+0

@ Karlchen9,請發表一個單獨的問題。 – falsetru 2014-09-21 08:42:15