将大于 128 的数字转换为 ASCII

Converting to ASCII with numbers above 128

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

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

方法简单。 104给我"h",73给我"I"。但是,当我使用大于 128 的数字时,它会给我错误的结果。我认为它正在转换为 unicode 或类似的东西? IE。 193 给了我 Á 而不是 "bottom" 符号(颠倒 T)。

Python3 中的所有文本都是 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 here; a codepage that includes box drawing characters; 193 确实是该代码页中的倒 T:

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

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

在这种情况下,您可能想阅读 Unicode 和 Python: