w1n*_*ter 2 python ascii python-3.x
简单的问题,但应该是简单的答案^ _ ^环顾四周,一无所获.我正在使用python 3.4并且可以将数字转换为128
print (chr(int))
Run Code Online (Sandbox Code Playgroud)
方法没有麻烦.104给我"h",73给我"我".但是,当我使用高于128的数字时,它给了我错误的东西.我认为它正在转换为unicode或类似的东西?即193给我Á而不是"底部"符号(倒置T).
Python 3中的所有文本都是Unicode.ASCII恰好是Unicode标准的一个子集.
因此chr(codepoint) 总是转换为Unicode字符,其中前128个代码点也符合ASCII标准.
我不确定您对值> 127的期望是什么,因为ASCII标准只包含128个代码点.目前使用的大多数编解码器都是ASCII标准的扩展; 如果你期望一个特定的编解码器,你需要使用字节并从该编解码器解码; 使用您可以使用的Windows 1252代码页:
>>> bytes([128]).decode('cp1252')
'€'
Run Code Online (Sandbox Code Playgroud)
因为该代码页将代码点128定义为欧元符号,而Unicode标准将该代码点定义为(十六进制)U + 20AC.
我想你在这里寻找Codepage 437 ; 包含方框图字符的代码页; 193确实是该代码页中的倒T:
>>> bytes([193]).decode('cp437')
'?'
Run Code Online (Sandbox Code Playgroud)
这是U + 2534 BOX图纸在Unicode标准中的LIGHT UP和HORIZONTAL.绝对清楚:代码页437中存在超过127的代码点,但不是ASCII.
您可能希望在此上下文中阅读Unicode和Python:
绝对最低每个软件开发人员绝对必须知道关于Unicode和字符集(没有任何借口!)作者:Joel Spolsky
Ned Batchelder的实用Unicode
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |