2017-02-28 313 views
1

我有問題解碼UTF8,我嘗試在網絡上的一切,它仍然沒有工作,蟒蛇2.7問題與解碼UTF8

我從文件中讀取行,此行包含不出現

UTF8字符

如果我手動設置這一行字符出現,有什麼區別,我該如何解決這個問題?

此代碼工作:

b="test Test\hello\\\xd7\x92\xd7\x99\xd7\x95\xd7\x9c \xd7\x9b\xd7\x9e\xd7\x95\xd7\xaa\xd7\x99.csv" 
print(type(b)) 
print (b) 

的resulat: 測試測試\你好\גיולכמותי以csv

這個代碼不工作:

f = open('C:\Program Files (x86)\Syslogd\Logs\SyslogCatchAll.txt') 
for line in f : 
print(line) 

的resault被:

個bro_files測試\你好\\ XD7 \ X92 \ XD7 \ X99 \ XD7 \ X95 \ XD7 \ x9c \ XD7 \ x9b \ XD7 \ x9e \ XD7 \ X95 \ XD7 \的Xaa \ XD7 \ x99.csv

2線是一樣的,區別是我從文件

回答

0

讀它打開文件使用UTF-8,你需要使用codecs爲:

import codecs 
f = codecs.open('C:\Program Files (x86)\Syslogd\Logs\SyslogCatchAll.txt', encoding="utf-8") 

或者,您可以用io模塊嘗試,如建議@ PM 2Ring

import io 
io.open("C:\Program Files (x86)\Syslogd\Logs\SyslogCatchAll.txt", encoding="utf8") 
+0

[ 'io.open'](https://docs.python.org/2/library/io.html#io.open)優於'codecs.open'。 –

+0

試試這個,還沒有工作,這次我得到了類型unicode,和xd7 \ x92 \ x99相同的行.... – newton

+0

然後嘗試用'io.open()'建議@ PM2Ring – ZdaR