首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与编解码混淆

与编解码混淆
EN

Stack Overflow用户
提问于 2020-04-05 16:54:05
回答 2查看 188关注 0票数 0

因此,我想打印希伯来语(或任何其他语言),通过书写字母的十六进制值,解码它,并打印到终端。

这就是我尝试过的,我从https://en.wikipedia.org/wiki/Code_page_862获得了https://en.wikipedia.org/wiki/Code_page_862的代码页,并试图打印第一个字母。它输出的是其他东西,而不是想要的结果。

我做错什么了?

代码语言:javascript
复制
letter = b'\x05\xD0'
print(letter.decode('cp862'))

产出:

wahalez@wahalez:~/dev/ python $ pythonp25.py

何时使用编码,何时使用解码?

编辑:

另一种bizzare行为是,我交换了字节并将其解码为utf-16,它就工作了。为什么..。

代码语言:javascript
复制
letter2 = b'\xD0\x05'
print(letter2.decode('utf-16'))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-05 17:01:31

你看错了图表。值0x05D0是该字符的unicode代码点。值0x80是CP862值(参见右边的8_,顶部的_0 )。所以如果你要写:

代码语言:javascript
复制
>>> letter = b'\x80'
>>> print(letter.decode('cp862'))
א

你会得到你想要的。

,我如何使用unicode呢?用什么编码?

我不太清楚你想做什么。如果您只想使用表中的字符,可以复制和粘贴它。例如:

代码语言:javascript
复制
letter = 'א`

没有必要在编码或解码方面胡闹。

如果要从特定的unicode代码点生成字符,只需使用chr函数:

代码语言:javascript
复制
>>> print(chr(0x05d0))
א
票数 0
EN

Stack Overflow用户

发布于 2020-04-05 16:58:22

有一个方便的缩写;BADTIE:字节被解码,文本被编码。

此外,您还混淆了Unicode代码点和cp862值。

希伯来字母Aleph是Unicode编码点0x05D0,但在代码页862中是0x80。

试试这个:

代码语言:javascript
复制
In [3]: b = b'\x80'
Out[3]: b'\x80'

In [4]: b.decode('cp862')
Out[4]: 'א'

若要使用unicode代码点,请尝试:

代码语言:javascript
复制
In [12]: chr(0x05D0)
Out[12]: 'א'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61046134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档