转换为数字大于128的ASCII

时间:2015-06-02 13:55:19

标签: python python-3.x ascii

简单的问题,但应该是简单的答案^ _ ^环顾四周,一无所获。我正在使用python 3.4并且可以使用

将数字转换为128
print (chr(int))

方法没有麻烦。 104给我“h”,73给我“我”。但是,当我使用高于128的数字时,它给了我错误的东西。我认为它正在转换为unicode或类似的东西?即193给我Á而不是“底部”符号(倒置T)。

1 个答案:

答案 0 :(得分:5)

Python 3中的所有文本都是Unicode。 ASCII恰好是Unicode标准的子集

所以chr(codepoint) 总是转换为Unicode字符,其中前128个代码点也符合ASCII标准。

我不确定您对价值的期望> 127作为ASCII标准仅包含128个码点。目前使用的大多数编解码器都是ASCII标准的扩展;如果你期望一个特定的编解码器,你需要使用 bytes 并从该编解码器解码;使用您可以使用的Windows 1252代码页:

>>> bytes([128]).decode('cp1252')
'€'

因为该代码页将代码点128定义为欧元符号,而Unicode标准则将其定义为(十六进制)U+20AC

我认为你在这里寻找Codepage 437;包含box drawing characters的代码页; 193确实是该代码页中的倒T:

>>> bytes([193]).decode('cp437')
'┴'

Unicode标准中的U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL。要绝对清楚:代码页437中存在超过127的代码点,但不是ASCII

您可能希望在此上下文中阅读Unicode和Python: