Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прочитать \u041f\u0430\u0440\u0430\u0433\u0432\u04, опять кодировки... 
V
    Опции темы
kulibinka
Дата 21.10.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Получаю страницу с интернета - там весь текст вида \u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439
И это точно русский текст smile

Подскажите пожалуйста как эту абрукадабру полюдски прочитать (unicode decode encode пробовал, но впустую).
PM MAIL   Вверх
pythonwin
Дата 21.10.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Код

>>> print u'\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439'
Парагвай


PM WWW GTalk Jabber   Вверх
kulibinka
Дата 21.10.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Точно, почти то что надо smile
Код

    text = '\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439';
    new_text0 = u"%s"%text
    new_text1 = u"\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439"
    print new_text0
    print new_text1


Получаем
\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439
Парагвай

Почему new_text0 не равно new_text1 (т.е. как не вручную (дописывая u) получить декодированный текст)?
PM MAIL   Вверх
Daevaorn
Дата 21.10.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(kulibinka @  21.10.2008,  11:45 Найти цитируемый пост)
Почему new_text0 не равно new_text1 (т.е. как не вручную (дописывая u) получить декодированный текст)? 

Последовательность символов "\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439" уже уникод строка. Но вам не повезло и вы её получили в виде байт-строки. Если создавать уникод строку форматированием, то все операнды будут приводиться к уникоду, но с декодированием в дефолтную кодировку.

Надо всего лишь создать из неё всё-таки уникод строку, но без декодирования. Например так:
Код

>>> text = '\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439'
>>> print text.decode("raw_unicode_escape")
Парагвай
>>> print unicode(text, "raw_unicode_escape")
Парагвай

PM MAIL WWW   Вверх
kulibinka
Дата 21.10.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата(Daevaorn @ 21.10.2008,  11:31)
Надо всего лишь создать из неё всё-таки уникод строку, но без декодирования. Например так:
Код

>>> text = '\u041f\u0430\u0440\u0430\u0433\u0432\u0430\u0439'
>>> print text.decode("raw_unicode_escape")
Парагвай
>>> print unicode(text, "raw_unicode_escape")
Парагвай

Спасибо smile

Это сообщение отредактировал(а) kulibinka - 21.10.2008, 11:55
PM MAIL   Вверх
dipsy
Дата 6.3.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 13.1.2005
Где: Нижний Новгород

Репутация: нет
Всего: нет



а при выводе через mod_python, уже после перекодировки, потребовалось добавить ещё и encode: 
Код

    answer = unicode( text, "raw_unicode_escape" )
    req.write( answer.encode("utf-8") )

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.