怎样将 url 中非 ASCII 字符的部分 urlencode, UTF-8 环境

2015-07-19 15:14:10 +08:00
 laoyuan
url = 'http://doman.com/中文' #有些不太正规的网站url 就是这样任性的

得到 http://doman.com/%E4%B8%AD%E6%96%87

urllib.quote( )不行,误伤冒号了
2444 次点击
所在节点    Python
5 条回复
lixia625
2015-07-19 16:04:40 +08:00
先把 http:// 拿走
laoyuan
2015-07-19 16:39:26 +08:00
@lixia625 误伤太多,比如 url = 'http://domain.com/?中文&+,' 见 rfc3986
kaneg
2015-07-22 15:12:18 +08:00
reserved = ';/:@&=+$,'
print urllib.quote(url, reserved)

不过奇怪的是,唯独?不能加入reserved,否则中文都变成?了
laoyuan
2015-07-22 15:18:18 +08:00
@kaneg 不止这些字符,~ 在url 里也很常见。我感觉应该有什么包可以,反正粘到浏览器地址栏里,浏览器可以正确的转义
jack139
2015-07-23 14:22:40 +08:00
好像有个urllib.quote_plus,或是urllib2,记不清了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/206734

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX