Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Разработка GUI > PyQt4, httplib2, отправка данных POST, unicode


Автор: idler 4.7.2009, 19:52
Я в python новичок, однако немного программировал на PHP, JavaScript (как для веб страниц так и для XUL) , чуть знаю C 

Решил попробовать Python и сделать что-то полезное.
Есть такой Twitter-клиент h-twt
Я добавли к нему немного функциональности, научил его отображать timeline в примитивном виде.
И обнаружил, что не могу отправлять в твиттер посты на русском.

Полный исходник тут: http://www.maxantonov.name/MyTwitting.html

Текст для отправки  я получаю из QTextEdit
Фрагмент кода:
 
Код

def postTweet(self):
        mesg = self.txt.toPlainText()
        post = urllib.urlencode({ 'status' : mesg })

        try:
            http = httplib2.Http()

            http.force_exception_to_status_code = False

            http.add_credentials(self.username, self.password)

            resp, content = http.request(self.twitUpdate, 'POST', post)



Ошибка:
Код


max@desktop:~$ htwt
Traceback (most recent call last):
  File "/home/max/bin/htwt", line 27, in postTweet
    post = urllib.urlencode({ 'status' : mesg })
  File "/usr/lib/python2.6/urllib.py", line 1265, in urlencode
    v = quote_plus(str(v))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)



Ясно что дело в кодировках, только в документации я не нашел ничего кроме unicode(string,encoding)
Пробовал применять unicode к значению поля ввода перед отправкой, но в твиттере только знаки вопроса.

Подскажите, куда копать?
системная локаль: ru_RU.UTF-8


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)