Уведомления

Группа в Telegram: @pythonsu

#1 Июль 7, 2010 10:45:33

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

Проблема с выводом(кодировки)

Здравствуйте.Вот исходник весь, и здесь чтото не так работает

import httplib2
import urllib
import re
import os

class forismatic:
   def __init__(self, language):        
       self.language=language
       self.quote=''
       self.author=''
       self.quoteLink=''
       
   def getQuote(self):
       http=httplib2.Http()
       url='http://api.forismatic.com/api/1.0/'
       body={'method':'getQuote', 'key':'', 'format':'xml', 'lang':self.language}
       headers={'Content-type':'application/x-www-form-urlencoded'}
       self.response=http.request(url, 'POST', headers=headers, body=urllib.urlencode(body))
       
       self.parse()
       
   def parse(self):
       resp=str(self.response)
       temp=re.findall(r'<quoteText>(.*?)</quoteText>', resp)
       self.quote=temp[0]
       temp=re.findall(r'<quoteAuthor>(.*?)</quoteAuthor>', resp)
       self.author=temp[0]
       temp=re.findall(r'<quoteLink>(.*?)</quoteLink>', resp)
       self.quoteLink=temp[0]
       
       
Теперь я пытаюсь всё это использовать
from api import forismatic
m=forismatic('ru')
m.getQuote()
print m.quote
Текст quote он на русском в кодировке UTF-8 приходит. И при попытке вывода я вместо русского текста получаю не раскодированое сообщение.
Кажется видится в чём проблема. В данном случае переменная “а” - как раз мой m.quote
>>> a
'\\xd0\\x96\\xd0\\xb8\\xd0\\xb7\\xd0\\xbd\\xd1\\x8c \\xd0\\xba\\xd0\\xbe\\xd1\\x80\\xd0\\xbe\\xd1\\x82\\xd0\\xba\\xd0\\xb0, \\xd0\\xb8 \\xd0\\xbf\\xd0\\xbe\\xd1\\x8d\\xd1\\x82\\xd0\\xbe\\xd0\\xbc\\xd1\\x83 \\xd0\\xbd\\xd0\\xb5 \\xd1\\x81\\xd0\\xbb\\xd0\\xb5\\xd0\\xb4\\xd1\\x83\\xd0\\xb5\\xd1\\x82 \\xd1\\x82\\xd0\\xb5\\xd1\\x80\\xd1\\x8f\\xd1\\x82\\xd1\\x8c \\xd0\\xb2\\xd1\\x80\\xd0\\xb5\\xd0\\xbc\\xd0\\xb5\\xd0\\xbd\\xd0\\xb8, \\xd0\\xbd\\xd1\\x83\\xd0\\xb6\\xd0\\xbd\\xd0\\xbe \\xd0\\xbd\\xd0\\xb0\\xd1\\x81\\xd0\\xbb\\xd0\\xb0\\xd0\\xb6\\xd0\\xb4\\xd0\\xb0\\xd1\\x82\\xd1\\x8c\\xd1\\x81\\xd1\\x8f \\xd0\\xb5\\xd1\\x8e. '
>>> print a
\xd0\x96\xd0\xb8\xd0\xb7\xd0\xbd\xd1\x8c \xd0\xba\xd0\xbe\xd1\x80\xd0\xbe\xd1\x82\xd0\xba\xd0\xb0, \xd0\xb8 \xd0\xbf\xd0\xbe\xd1\x8d\xd1\x82\xd0\xbe\xd0\xbc\xd1\x83 \xd0\xbd\xd0\xb5 \xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd1\x83\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb5\xd1\x80\xd1\x8f\xd1\x82\xd1\x8c \xd0\xb2\xd1\x80\xd0\xb5\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb8, \xd0\xbd\xd1\x83\xd0\xb6\xd0\xbd\xd0\xbe \xd0\xbd\xd0\xb0\xd1\x81\xd0\xbb\xd0\xb0\xd0\xb6\xd0\xb4\xd0\xb0\xd1\x82\xd1\x8c\xd1\x81\xd1\x8f \xd0\xb5\xd1\x8e.



Отредактировано (Июль 7, 2010 10:56:25)

Офлайн

#2 Июль 7, 2010 13:18:32

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Проблема с выводом(кодировки)

Учимся пользоваться поиском.

>>> a.decode('unicode-escape').encode('raw-unicode-escape')

p.s. Можно уже диссертацию по кодировкам в Python писать. Что тут вообще сложного, почему бы не воспользоваться своим преимуществом над обезьяной, данным эволюцией?

..bw



Отредактировано (Июль 7, 2010 13:19:39)

Офлайн

#3 Июль 7, 2010 13:27:48

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

Проблема с выводом(кодировки)

Огромное спасибо, всё работает. Поиском пользуюсь, но судя по всему не достаточно тщательно. Я пытался использовать encode decode, однако я пытался что-то с UTF-8 перекодировать и в итоге ничего не получил.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version