python - 如何在python中读取unicode文件(不是UTF-8)

标签 python unicode encoding

如何在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/

相关文章:

python - 针对 Python 使用的适当 Unix(.profile、.bash_profile)更改

Python Nltk :UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 50: invalid continuation byte

java - Maven 测试中的编码无法正常工作

python - Unicode解码错误: 'ascii' codec can't decode

python - macOS X 奇怪的 python

python - 除非 POS 是显式的,否则 WordNetLemmatizer 不会返回正确的引理 - Python NLTK

当设置为长时间后时,Python 计时器脚本不会运行

linux - 做猫时看不到 Unicode 字符

c# - 通过\u或\x为一个字符分配一个非常大的十六进制

python - FFmpeg 将 .mp3 输出保存到变量中