Вы явно запросили bytes
представление вашего массива.Естественно, это не равно представлению Unicode.
Из документов:
array.tostring (): Устаревший псевдоним для tobytes ().
array.tobytes (): преобразовать массив в массив машинных значений и вернуть представление байтов (ту же последовательность байтов, которая была бы записана в файл методом tofile ().)
Новое в версии 3.2:Для ясности tostring () переименовывается в tobytes ().
Вместо этого вам нужно использовать tounicode
:
>>> import array
>>> s = "a\xbb\ucccc\U0001dddd"
>>> array.array('u', s).tounicode() == s
True
Если вы переносите некоторый код из Python 2.xвы обнаружите, что это естественный эквивалент того, что вы видите там;единственное отличие в Python 2.x версии приведенного выше фрагмента кода будет s = u"etc etc"
.
Тип 'u' - это темный редко посещаемый угол модуля массива, который сам является темным углом Python.Если вы НЕ мигрируете с Python 2.x, вы можете сказать, чего вы пытаетесь достичь (изменяемые строки?), И получить некоторые рекомендации.