Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2010 23:34:32

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка

ну… судя по статистике (у нас работает, у вас - нет) - то да.
Py 2.6.5 Win Xp IDLE окно Python Shell ситуация аналогичная… Работает не верно…

alexx11, вместо модификатора u используйте функцию unicode() и все будет OK. В обычных программах можно использовать модификатор u. Если есть заголовок # -*- coding: Кодировка -*-, то все будет OK.

>>> u'тест'
u'\xf2\xe5\xf1\xf2'
>>> unicode('тест', 'cp1251')
u'\u0442\u0435\u0441\u0442'



Офлайн

#2 Июль 17, 2010 00:01:22

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

Кодировка

Daevaorn задал правильный вопрос. Я как-то попарился с тем, что в ipython оно работает именно так, как у ТС. Причин не знаю и знать не хочу – пока они это не поправят, я ipython пользовать не буду.



Офлайн

#3 Июль 17, 2010 00:04:46

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка

Nik
вместо модификатора u используйте функцию unicode() и все будет OK
Да не, вопрос не в том как получить, а наверное что выдаёт u'str'! Потому что не только в моей программе этого модификатора достаточно, но я ещё и библиотеки с ним подгружаю.
Nik
В обычных программах можно использовать модификатор u.
Я вот не проверял поэтому и спрашиваю, как в программе u'str' сработает, это будет юникод? или шестнадцатеричное представление, или utf-8, как в encoding указано.



Офлайн

#4 Июль 17, 2010 00:16:23

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка

Я вот не проверял поэтому и спрашиваю, как в программе u'str' сработает, это будет юникод?
Да в обычной программе будет юникод. Можете смело подключать модули. Ошибки наблюдал только в окне Python Shell. В других окнах, например, в интерактивной облочке и редакторе PythonWin все выводится нормально.

или шестнадцатеричное представление
Шестнадцатеричное представление отображается только при выводе без print. Чтобы были буквы при выводе используйте print.

utf-8, как в encoding указано.
Юникод-строки к utf-8 никакого отношения не имеют…



Офлайн

#5 Июль 17, 2010 17:02:01

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка

Nik
Да в обычной программе будет юникод.
Написал две программы, первая:
#!/usr/bin/python
# encoding: koi8-r

a = 'тест'.decode("koi8-r")
b = u'тест'
print a == b
Результат выполнения True
Вторая:
#!/usr/bin/python
# encoding: utf-8

a = 'тест'.decode("koi8-r")
b = u'тест'
print a == b
File “./test.py”, line 4
b = u'тест'
SyntaxError: (unicode error) ‘utf8’ codec can't decode byte 0xd4 in position 0: invalid continuation byte
Значит дало не только в Python Shell
Версия sys.version_info(major=2, minor=7, micro=0, releaselevel='final', serial=0)
В 2.5 то же.
Что посоветуте? Не править же все подключаемые модули? :]



Офлайн

#6 Июль 17, 2010 17:25:39

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка

если указываешь кодировку файла

# encoding: utf-8
то сохранять файл нужно также в этой кодировке

У тебя же указана utf-8, а реальная koi8-r, потому Python и ругается



Офлайн

#7 Июль 17, 2010 17:35:16

alexx11
От:
Зарегистрирован: 2010-05-13
Сообщения: 208
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка

dimabest
то сохранять файл нужно также в этой кодировке
Блин, я тупо в nano эти примеры набросал. ВСЁ всем СПАСИБО, проблема решена.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version