Python 转换为数字大于128的ASCII码
简单的问题,但应该是简单的答案^ ^环顾四周,什么也没发现。我使用的是Python3.4,使用Python 转换为数字大于128的ASCII码,python,python-3.x,ascii,Python,Python 3.x,Ascii,简单的问题,但应该是简单的答案^ ^环顾四周,什么也没发现。我使用的是Python3.4,使用 print (chr(int)) 没有麻烦的方法。104给我“h”,73给我“I”。然而,当我使用大于128的数字时,它给出了错误的结果。我认为它正在转换为unicode或类似的东西?例如,193给我Á而不是“底部”符号(倒置的T)。Python 3中的所有文本都是Unicode。ASCII恰好是Unicode标准的一个子集 因此chr(codepoint)始终转换为Unicode字符,其中前128
print (chr(int))
没有麻烦的方法。104给我“h”,73给我“I”。然而,当我使用大于128的数字时,它给出了错误的结果。我认为它正在转换为unicode或类似的东西?例如,193给我Á而不是“底部”符号(倒置的T)。Python 3中的所有文本都是Unicode。ASCII恰好是Unicode标准的一个子集 因此
chr(codepoint)
始终转换为Unicode字符,其中前128个代码点也符合ASCII标准
我不确定您对大于127的值的期望值,因为ASCII标准仅包含128个代码点。现在使用的大多数编解码器都是ASCII标准的扩展;如果需要特定的编解码器,则需要使用字节并从该编解码器解码;要使用Windows 1252代码页,您可以使用:
>>> bytes([128]).decode('cp1252')
'€'
由于该代码页将代码点128定义为欧元符号,而Unicode标准将其定义为(十六进制)
我想你是在这里找的;一种代码页,包括:;193确实是该代码页中的倒T:
>>> bytes([193]).decode('cp437')
'┴'
这是Unicode标准。非常清楚:127以上的代码点存在于代码页437中,但不是ASCII
在此上下文中,您可能需要阅读Unicode和Python:
- 乔尔斯波尔斯基
- 内德·巴奇尔德
unicodeincodeerror
和print(chr(193))
。确切的环境给出了什么样的确切代码?另请参见下面的@Martijn的答案。我很想再给一个+1来查找Cp437,但你已经从我这里得到了一个了。@piet.t一般来说,我有时希望能够给“多重投票”来获得好的答案……我正在和一个使用python 2.7的人一起工作,当他使用chr时(193)他得到的是倒T。我认为是我而不是他出了问题,这表明193是倒T。@w1nter:在Python 2中,你产生字节。如果他们的控制台或终端配置为使用CP437,则打印chr(193)
会将该字节写入终端,然后终端会将该字节解释为字符。@w1nter:asciitable.com是灾难性错误。没有扩展ASCII这样的东西,至少不是标准。看见