Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2010 23:10:49

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные файлы, кодировки

Здравствуйте!.. снова. Я слегка запутался.

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)

Офлайн

#2 Фев. 25, 2010 23:27:04

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные файлы, кодировки

buf = 'ф'
f = open('test2', 'wb')
f.write(unicode(buf, 'utf-8').encode('cp1251'))
f.close()
os.stat('test2').st_size
>>> 1
'utf-8' - кодировка исходного файла.
'cp1251' - любая однобайтная кодировка.
Не?



Отредактировано (Фев. 25, 2010 23:31:51)

Офлайн

#3 Фев. 25, 2010 23:45:31

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

бинарные файлы, кодировки

:-)

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

P.S. А тех, кто использует восьмибитные национальные кодировки, нужно предавать анафеме и сжигать на кострах за багохульство!



Отредактировано (Фев. 25, 2010 23:47:41)

Офлайн

#4 Фев. 26, 2010 16:52:50

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

бинарные файлы, кодировки

ок, пасибо :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version