【问题标题】:Trouble using gdata and Unicode Cyrillic in Python在 Python 中使用 gdata 和 Unicode Cyrillic 时遇到问题
【发布时间】:2012-11-27 09:30:40
【问题描述】:

我有这个代码

# -*- coding: utf8 -*-
__author__ = 'user'
import gdata.youtube.service
yt_service = gdata.youtube.service.YouTubeService()
query = gdata.youtube.service.YouTubeVideoQuery()
query.vq = u"не"
feed = yt_service.YouTubeQuery(query)

for yt_item in feed.entry:
    print yt_item.GetSwfUrl()

我收到了这个错误:

回溯(最近一次通话最后一次):
文件“cyr_search.py​​”,第 7 行,在
feed = yt_service.YouTubeQuery(查询)
YouTubeQuery
中的文件“/Users/user/Documents/GrabaHeroku/graba_h_ve/lib/python2.7/site-packages/gdata/youtube/service.py”,第 1346 行 结果 = self.Query(query.ToUri())
文件“/Users/user/Documents/GrabaHeroku/graba_h_ve/lib/python2.7/site-packages/gdata/service.py”,第 1715 行,在 ToUri
返回 atom.service.BuildUri(q_feed, self)
文件“/Users/user/Documents/GrabaHeroku/graba_h_ve/lib/python2.7/site-packages/atom/service.py”,第 584 行,在 BuildUri
parameter_list = DictionaryToParamList(url_params, escape_params)
文件“/Users/user/Documents/GrabaHeroku/graba_h_ve/lib/python2.7/site-packages/atom/service.py”,第 551 行,在 DictionaryToParamList
对于参数,(url_parameters 或 {}).items()] 中的值
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py”,第 1275 行,在 quote_plus
返回报价(s,安全)
文件“/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py”,第 1268 行,引用
return ''.join(map(quoter, s))
KeyError: u'\u043d'

如何搜索非 ASCII。我需要对查询进行 url 编码吗?我以为图书馆会自己做。

【问题讨论】:

  • 看起来 unicode 数据是直接传递给 urllib.quote 函数的,所以您可能必须在将 Unicode 数据传递给查询之前自己对其进行编码。尝试使用query.vq = u"не".encode('utf8') 看看会发生什么?

标签: python unicode youtube gdata


【解决方案1】:

改为:

query.vq = u"не".encode('utf8')

字符串在发送前需要进行编码。

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 2020-07-15
    • 2011-05-02
    相关资源
    最近更新 更多