【发布时间】:2014-04-24 22:30:38
【问题描述】:
我正在使用 PyPy 在 RPython 中制作一个虚拟机。问题是,当我尝试添加 unicode 支持时,我发现了一个不寻常的问题。我将在示例中使用字母“á”。
# The char in the example is á
print len(char)
OUTPUT:
2
我了解字母“á”如何占用两个字节,因此长度为 2。但问题是当我使用下面的这个示例时,我遇到了问题。
# In this example instr = "á" (including the quotes)
for char in instr:
print hex(int(ord(char)))
OUTPUT:
0x22
0xc3
0xa1
0x22
你可以有 4 个数字。 0x22 用于引号,但引号之间只有 1 个字母,但有两个数字。我的问题是,我测试这个脚本的一些机器产生了这个输出:
OUTPUT:
0x22
0xe1
0x22
有没有办法让两台机器上的输出相同?每个脚本都完全相同。
【问题讨论】:
-
不相关:将字节字符串转换为十六进制字符串:
print(binascii.hexlify(instr)) -
您问题中的代码是针对 Python 2 的(根据
print语句和'"á"'的内容判断)
标签: python python-3.x unicode utf-8