2017-02-28 261 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