Я создаю виртуальную машину в RPython, используя PyPy. Проблема в том, что когда я пытался добавить поддержку unicode, я обнаружил необычную проблему. Я буду использовать букву «á» в своих примерах.Ошибка юникода Python
# 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
Есть в любом случае, чтобы сделать вывод одинаково на обеих машинах? Скрипт точно такой же для каждого.
unrelated: для преобразования байта в шестнадцатеричную строку: 'print (binascii.hexlify (instr))' – jfs
Ваш код в вопросе предназначен для Python 2 (судя по выражению 'print' и содержимому' '' á "'') – jfs