首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对wikimedia api使用扩展ascii字符

对wikimedia api使用扩展ascii字符
EN

Stack Overflow用户
提问于 2010-09-22 10:11:14
回答 1查看 479关注 0票数 0

我正在为维基百科写一个简单的搜索算法。当我发送一个带有重音和其他字符的查询时遇到了问题,这些字符在常规英语中是看不到的。返回错误的查询包括:

http://en.wikipedia.org/w/api.php?action=query&titles=Albrecht%20Dürer&prop=links&pllimit=33&format=xml

http://en.wikipedia.org/w/api.php?action=query&titles=Ancien%20Régime&prop=links&pllimit=33&format=xml

http://en.wikipedia.org/w/api.php?action=query&titles=Feigenbaum-Cvitanović&prop=links&pllimit=33&format=xml

http://en.wikipedia.org/w/api.php?action=query&titles=Banach–Tarski%20paradox&prop=links&pllimit=33&format=xml

http://en.wikipedia.org/w/api.php?action=query&titles=Grundzüge%20der%20Mengenlehre&prop=links&pllimit=33&format=xml

http://en.wikipedia.org/w/api.php?action=query&titles=Grundzüge%20einer%20Theorie%20der%20geordneten%20Mengen&prop=links&pllimit=33&format=xml

http://en.wikipedia.org/w/api.php?action=query&titles=Karl%20Bögel&prop=links&pllimit=33&format=xml

但是如果有像"Fractals“这样的简单字符,查询就能正常工作。我应该如何更改查询的格式才能使其正常工作?

我的代码在http://code.google.com/p/wikipediafoundation/source/browse/上是开源的。请查看hg/src/list.py。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-22 10:25:29

我在Python源代码中看不到任何关于如何对查询中发送的非ascii字符进行编码的痕迹。对于使用ascii以外的任何东西的URL(包括其中的查询字符串),您需要(如果它们还没有使用unicode,那么)将它们编码为utf-8,并对结果进行百分号转义(对于后者,使用标准Python库模块urllib中的函数urllib.quote_plus,当然,对于编码,使用unicode字符串的.encode('utf8')方法--如果您需要从编码方式不同的字节字符串生成unicode字符串,则使用字节字符串的.decode('latin-1') --当然,或者使用它所在的编码的名称;-)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3765855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档