Я смущен о шестнадцатеричном представлении Unicode. У меня есть пример файла с одним математическим символом знака интеграла. Это U + 222B Если я кот файл или отредактируйте его в vi, я получу знак интеграла. Шестнадцатеричный дамп файла показывает, что его содержание в гексагоне составляет 88e2 0aabConfused о представлениях unicode
В python Я могу создать единый символ Юникода и распечатать рендеринг на моем терминале и знак интеграла.
>>> p=u'\u222b'
>>> p
u'\u222b'
>>> print p
∫
Что меня смущает, я могу открыть файл с знаком интеграла в нем, получить интегральный символ, но содержание шестигранной отличается.
>>> c=open('mycharfile','r').read()
>>> c
'\xe2\x88\xab\n'
>>> print c
∫
Один объект Unicode и один является простой строкой, но то, что отношения между двумя шестигранными кодами, по-видимому для того же самого характера? Как бы я вручную преобразовал один в другой?
'0x222b' = 8747 - целое число кодовых точек, которое в Юникоде ассоциировано со знаком интеграла' ∫'. когда вы пишете текст в файл или отправляете его по проводу, он всегда должен быть сериализован для бит - обычно, октеты (байты) являются предпочтительными единицами здесь. серия '0xe2',' 0x88', '0xab' (или' 0b11100010', '0b10001000',' 0b10101011' в двоичном формате) - это кодировка UTF-8 (http://en.wikipedia.org/wiki/UTF- 8) «0x222b». Кстати, три ведущие '1' в первом байте говорят вам, что этот код указан в трех байтах: UTF-8 - это как переменная ширина, так и «синхронизация». – flow
Обязательно: http://bit.ly/unipain – Daenyth
, что битовая ссылка выглядит многообещающей. также следует отметить, что обработка Юникода намного более устойчива в Py3, чем когда-либо в Py2, до такой степени, что этот фактор должен сильно влиять на решение о том, какую версию Python использовать. К сожалению, есть непрочный и продолжающийся разрыв между Py2 и Py3, а поддержка сторонней библиотеки отстает. где Py3 светит, что старые «строки ASCII» исчезли; вы всегда имеете дело с буфером байтов (закодированным) или другим (Unicode) текстом (декодированным). это просто изменилось понятие/называние вещей, но тогда программирование много о концепциях и именовании вещей. – flow