Невозможно декодировать utf8 в python для отображения языка хинди в оболочке

  1. изменил site.py, чтобы установить кодировку по умолчанию как «utf-8»
  2. Не удалось заставить IDLE отображать язык хинди. Я получаю все символы utf-8 в качестве вывода.
  3. Получение данных напрямую из твиттера.

    import twitter
    #import sys
    #reload(sys)  # Reload does the trick!
    #sys.setdefaultencoding('UTF8')
    import codecs
    import sys
    #codecs.register(lambda name: codecs.lookup('utf-8') if name == 'cp65001' else None)
    
    
    api = twitter.Api(consumer_key='key',
    consumer_secret='secret',
    access_token_key='token_key',
    access_token_secret='token_secret')
    
    rate = api.GetUserTimeline(user_id='mchsmorahul',count=5)
    print [s.text for s in rate]
    

Выход :

[u'This update is from Python for Twitter', u'RT @harisbhadra: \u0909\u0938\u0915\u0947 \u0939\u093e\u0925 \u0915\u0940 \u0917\u093f\u0930\u092b\u094d\u0924 \u0922\u0940\u0932\u0940 \u092a\u0921\u0940 \u0924\u094b \u092e\u0939\u0938\u0942\u0938 \u0939\u0941\u0906 \u092e\u0941\u091d\u0947... \u0936\u093e\u092f\u0926 \u092f\u0947 \u0935\u0939\u0940 \u091c\u0917\u0939 \u0939\u0948\u0902 , \u091c\u0939\u093e\u0901 \u0938\u0947 \u0930\u093e\u0938\u094d\u0924\u0947 \u092c\u0926\u0932\u0928\u0947 \u0939\u0948\u0902...!\U0001f494\U0001f494', u'RT @drsjeee: \u091a\u0947\u0939\u0930\u093e \u092c\u0924\u093e \u0930\u0939\u093e \u0925\u093e \u0915\u093f...\n"\u092e\u093e\u0930\u093e \u0939\u0948 \u092d\u0942\u0916 \u0928\u0947 \n\u0914\u0930 \u0932\u094b\u0917 \u0915\u0939 \u0930\u0939\u0947 \u0925\u0947 \u0915\u093f \u0915\u0941\u091b \u0916\u093e \u0915\u0947 \u092e\u0930\u093e \u0939\u0948 |\u0964\u0964"', u'RT @Soniyalatiwal: "\u0915\u094d\u092f\u093e \u0932\u093f\u0916\u0942\u0901 \u0909\u0920\u0924\u0940 \u0906\u0938" \u092a\u0930 \u0932\u093f\u0916\u0942\u0901\n\u092f\u093e \u0930\u0942\u0915\u0924\u0940 \u0938\u093e\u0902\u0938 \u092a\u0930 \u0932\u093f\u0916\u0942\u0901,\n\u0915\u093e\u092f\u092e "\u092d\u0930\u094b\u0938\u0947 \u092a\u0930 \u0932\u093f\u0916\u0942\u0901\n\u092f\u093e \u091f\u0942\u091f\u0947"\u0935\u093f\u0936\u0935\u093e\u0938 \u092a\u0930 \u0932\u093f\u0916\u0942\u0901"', u'RT @TheUrbanSlangs: WWW - The only acronym that takes longer to say than the actual phrase it is meant to abbreviate.']

person rahul verma    schedule 18.06.2015    source источник
comment
Вы не должны не использовать setdefaultencoding(), это реакция карго-культа, которая приводит только к новым проблемам в будущем. В любом случае это не будет иметь значения, поскольку модуль twitter возвращает правильные объекты Unicode. У вас есть список строк Unicode, отображаемый как вывод repr(). Если вы хотите получить презентабельные для пользователя данные, распечатайте каждое значение Unicode в списке. for s in rate: print s.text.   -  person Martijn Pieters    schedule 18.06.2015
comment
@MartijnPieters: Спасибо за ответ :) Сработало.   -  person rahul verma    schedule 18.06.2015