如何将percentencoded url转换成带nonascii字符的字符串?

2024-04-25 22:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望这应该很容易。我有一个网址:

http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napol%C3%A9on.jpg

保存到json文件中,代码如下:

paintings = get_all_paintings(marc_chagall)
with open('chagall.json', 'w') as fb:
    x = json.dump(paintings, fb)

在该文件中,URL变为:

^{pr2}$

我可以使用以下代码获取原始的、可用的、百分比编码的URL:

p = u'http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napol\xe9on.jpg'
p = urllib.quote(p.encode('utf8'), safe='/:')
print repr(p) 
> 'http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napol%C3%A9on.jpg'

现在是棘手的部分。我想要一根绳子:

http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napoléon.jpg

napoléon中的非ascii字符完好无损。这是为了在存储桶中命名,而不是为了其他任何目的。我怎样才能生产这根绳子?在


Tags: and文件orgjsonhttpmarcjpgimages
2条回答

你已经拥有了:

print u'http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napol\xe9on.jpg'

p的值已经是该字符串,只是显示方式不同而已。在

只需打印unicode值:

>>> print u'http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napol\xe9on.jpg'
http://uploads4.wikiart.org/images/marc-chagall/kopeikin-and-napoléon.jpg

不要将Unicode值的python表示与实际值混淆(这是为了便于调试和内省,故意对非ASCII字符使用转义符)。在

打印将值编码到控制台或终端使用的编解码器,前提是Python能够检测到它。我的终端被设置为UTF-8,因此Python将U+00E9 unicode代码点编码为c3a9字节,然后我的终端将其解释为UTF-8并显示é。在

这一切只意味着已经有了正确的值,但是被调试输出抛出了。在

相关问题 更多 >

    热门问题