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() |