如何在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 读取的文本文件的十六进制值的示例。
这是韩语,“파 Been썬에서 한글 읽기
”
(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”文件吗?
最佳答案
磁盘文件是一个字节序列,如果您使用 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()
关于python - 如何在python中读取unicode文件(不是UTF-8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23465448/