Форум сайта python.su
Здравствуйте!.. снова. Я слегка запутался.
python 2.6
>>> import os
>>> buf = 'a'
>>> f = open('test', 'wb')
>>> f.write(buf)
>>> f.close()
>>> os.stat('test').st_size
1
>>> buf = 'ф'
>>> f = open('test2', 'wb')
>>> f.write(buf)
>>> f.close()
>>> os.stat('test2').st_size
2
>>> buf = u'a'
>>> f = open('test', 'wb')
>>> f.write(buf)
>>> f.close()
>>> os.stat('test').st_size
1
>>> buf = u'ф'
>>> f = open('test2', 'wb')
>>> f.write(buf)
Traceback (most recent call last):
File "<input>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0444' in position 0
: ordinal not in range(128)
>>> buf
u'\u0444'
Отредактировано (Фев. 25, 2010 23:11:35)
Офлайн
buf = 'ф'
f = open('test2', 'wb')
f.write(unicode(buf, 'utf-8').encode('cp1251'))
f.close()
os.stat('test2').st_size
>>> 1
Отредактировано (Фев. 25, 2010 23:31:51)
Офлайн
:-)
UTF-8, это кодировка с варьируемым размером символов.
Попробуй UTF-16. Именно UTF-16 использует QtCore.QString для более простой и, следовательно, более быстрой обработки.
P.S. А тех, кто использует восьмибитные национальные кодировки, нужно предавать анафеме и сжигать на кострах за багохульство!
Отредактировано (Фев. 25, 2010 23:47:41)
Офлайн
ок, пасибо :)
Офлайн