В Python 2.6.8 я получаю следующую ошибку при написании юникод строки:Python 2.6: Аргумент 1 должен быть строкой или возлагали буфер, не ByteArray, для ByteArray из UTF-8 строки
Traceback (most recent call last):
File "test.py", line 10, in <module>
f.write(bytearray(u, 'utf_8'))
TypeError: argument 1 must be string or pinned buffer, not bytearray
При запуске код в Python 2.7.8 все работает нормально, строка печатается и записывается правильно.
Это код:
#!/usr/bin/python
# -*- coding: utf-8 -*-
u = u"Möwe"
print u
with open("testout", "w") as f:
f.write(bytearray(u, 'utf_8'))
Такое же поведение для строк встречается, содержащих 4-байтовых UTF-8 символов.
Python 2.6 двоичные данные:
$ python26 -v -c 'exit' 2>&1 | grep -A 1 '^Python'
Python 2.6.8 (unknown, Nov 7 2012, 14:47:45)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2