简单的问题,但应该是简单的答案^ _ ^环顾四周,一无所获。我正在使用python 3.4并且可以使用
将数字转换为128print (chr(int))
方法没有麻烦。 104给我“h”,73给我“我”。但是,当我使用高于128的数字时,它给了我错误的东西。我认为它正在转换为unicode或类似的东西?即193给我Á而不是“底部”符号(倒置T)。
答案 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: