Найти - Пользователи
Полная версия: бинарные файлы, кодировки
Начало » Python для новичков » бинарные файлы, кодировки
1
Zubchick
Здравствуйте!.. снова. Я слегка запутался.

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'
В общем как мне записать в файл текст, чтобы на один символ приходилось одно и тоже число байт?
knkd
buf = 'ф'
f = open('test2', 'wb')
f.write(unicode(buf, 'utf-8').encode('cp1251'))
f.close()
os.stat('test2').st_size
>>> 1
'utf-8' - кодировка исходного файла.
'cp1251' - любая однобайтная кодировка.
Не?
ZZZ
:-)

UTF-8, это кодировка с варьируемым размером символов.
Попробуй UTF-16. Именно UTF-16 использует QtCore.QString для более простой и, следовательно, более быстрой обработки.

P.S. А тех, кто использует восьмибитные национальные кодировки, нужно предавать анафеме и сжигать на кострах за багохульство!
Zubchick
ок, пасибо :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB