关于python:从文本文件中读取非ASCII字符

Reading non-ASCII characters from a text file

我使用的是python 2.7。我试过很多方法,比如编解码器,但都不管用。我怎么修这个?

MyFiel.TXT

1
w?rd

我的密码

1
2
3
4
f = open('myfile.txt','r')
for line in f:
    print line
f.close()

产量

1
s\xc3\xb6zc\xc3\xbck

Eclipse和命令窗口上的输出相同。我在用Win7。当我不从文件中读取时,任何字符都没有问题。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import codecs
#open it with utf-8 encoding
f=codecs.open("myfile.txt","r",encoding='utf-8')
#read the file to unicode string
sfile=f.read()

#check the encoding type
print type(file) #it's unicode

#unicode should be encoded to standard string to display it properly
print sfile.encode('utf-8')
#check the type of encoded string

print type(sfile.encode('utf-8'))


型百万千克1首先-检测文件的编码百万千克1

1
2
3
  from chardet import detect
  encoding = lambda x: detect(x)['encoding']
  print encoding(line)

百万千克1然后-将其转换为Unicode或默认编码str:百万千克1

1
2
3
  n_line=unicode(line,encoding(line),errors='ignore')
  print n_line
  print n_line.encode('utf8')


这是终端编码。尝试使用文件中使用的相同编码配置终端。我建议你使用UTF-8。

顺便说一下,对所有输入输出进行解码编码以避免出现问题是一个很好的做法:

1
2
3
4
5
f = open('test.txt','r')    
for line in f:
    l = unicode(line, encoding='utf-8')# decode the input                                                                                  
    print l.encode('utf-8') # encode the output                                                                                            
f.close()