因此,我想打印希伯来语(或任何其他语言),通过书写字母的十六进制值,解码它,并打印到终端。
这就是我尝试过的,我从https://en.wikipedia.org/wiki/Code_page_862获得了https://en.wikipedia.org/wiki/Code_page_862的代码页,并试图打印第一个字母。它输出的是其他东西,而不是想要的结果。
我做错什么了?
letter = b'\x05\xD0'
print(letter.decode('cp862'))产出:
wahalez@wahalez:~/dev/ python $ pythonp25.py
╨
何时使用编码,何时使用解码?
编辑:
另一种bizzare行为是,我交换了字节并将其解码为utf-16,它就工作了。为什么..。
letter2 = b'\xD0\x05'
print(letter2.decode('utf-16'))发布于 2020-04-05 17:01:31
你看错了图表。值0x05D0是该字符的unicode代码点。值0x80是CP862值(参见右边的8_,顶部的_0 )。所以如果你要写:
>>> letter = b'\x80'
>>> print(letter.decode('cp862'))
א你会得到你想要的。
,我如何使用unicode呢?用什么编码?
我不太清楚你想做什么。如果您只想使用表中的字符,可以复制和粘贴它。例如:
letter = 'א`没有必要在编码或解码方面胡闹。
如果要从特定的unicode代码点生成字符,只需使用chr函数:
>>> print(chr(0x05d0))
א发布于 2020-04-05 16:58:22
有一个方便的缩写;BADTIE:字节被解码,文本被编码。
此外,您还混淆了Unicode代码点和cp862值。
希伯来字母Aleph是Unicode编码点0x05D0,但在代码页862中是0x80。
试试这个:
In [3]: b = b'\x80'
Out[3]: b'\x80'
In [4]: b.decode('cp862')
Out[4]: 'א'若要使用unicode代码点,请尝试:
In [12]: chr(0x05D0)
Out[12]: 'א'https://stackoverflow.com/questions/61046134
复制相似问题