如何阅读python 2.x
中的 unicode 文件(不是UTF-8,未知编码)
我试图找到一种读取unicode文件的方法。 我在互联网上搜索了很长时间。 但我找不到它。 我发现的是读取编码为UTF-8等文件的方法。 我知道,当我需要读UTF-8时,我可以使用编解码器。
codecs.open('unicode2.txt',encoding='utf-8')
使用此功能,我可以阅读UTF-8文件。 但我想知道如何读取unicode文件。 许多标题为“在python中读取unicode文件的方式”的帖子实际上告诉了一种方法来读取UTF-8,UTF-16等文件。
为什么有人没有解释如何阅读'UNICODE'文件?
这是我尝试用python读取的文本文件的十六进制值的示例。
这是韩语,“파이썬에서 한글 읽기
”
(FF FE) 0C D3 74 C7 6C C3 D0 C5 1C C1 20 00 5C D5 00 AE 20 00 7D C7 30 AE
(FF FE)
表示字节顺序。
每个2字节表示字符。如您所见,空间被写为'20 00'而不是'20'
在unicode中,空格被写为'20 00'。但是UTF-8,空格被写成'20'。
无法使用“codecs.open('unicode2.txt',encoding='**unicode**')
”等编解码器
在python中真的没有办法读取“unicode”文件吗?
答案 0 :(得分:4)
磁盘文件是 bytes 的序列,如果使用utf-8,utf-16le等字符编码,则可以将其解释为文本。 “unicode”不是字符编码。
There Ain't No Such Thing As Plain Text
您的示例文件可能使用utf-16le
编码:
>>> text = u"파이썬"
>>> text.encode('utf-16le')
'\x0c\xd3t\xc7l\xc3'
>>> text.encode('utf-16le').encode('hex')
'0cd374c76cc3'
b'\xff\xfe' == codecs.BOM_UTF16_LE
是UTF-16(LE)字符编码的BOM。要读取此类文件,您可以使用utf-16编码(根据BOM选择BE或LE):
import codecs
with codecs.open('filename', encoding='utf-16') as file:
text = file.read()