![](/img/trans.png)
[英]How can I convert a unicode string into string literals in Python 2.7?
[英]Why can't I convert unicode string to plain python string?
url = u'/wiki/Category:%E6%89%93%E7%A3%9A%E5%A1%8A'
解码后的字符串是(通过https://www.urldecoder.org/ ):
decoded_url = u'/wiki/Category:打磚塊'
在 python 中,我有以下代码来执行此转换:
decoded_url = url.decode('utf-8')
这段代码根本不会改变它。 我也试过:
decoded_url = url.encode('utf-8')
字符串保持不变。 如何将其转换为我想要的解码字符串?
这是 Python 2.7 代码,可以从问题中的原始字符串中获得所需的结果:
import urlparse
utfStr = u"/wiki/Category:%E6%89%93%E7%A3%9A%E5%A1%8A"
asciiStr = utfStr.encode()
str = urlparse.unquote(asciiStr)
print(str)
结果:
/wiki/Category:打磚塊
给定 unicode 字符串时,似乎unquote
会做错事。 您必须先将其转换为单字节字符串,然后unquote
才会做正确的事情。
它不是UTF-8 encoding
,而是url escaping
或Z572D4E421E5E6B9BC111D815E80
import urllib.parse
print( urllib.parse.unquote( u'/wiki/Category:%E6%89%93%E7%A3%9A%E5%A1%8A') )
结果
/wiki/Category:打磚塊
Python 3.x 文档: urllib.parse
编辑:
Python 2.7
在模块urlparse
中有它
import urlparse
print( urlparse.unquote(u'/wiki/Category:%E6%89%93%E7%A3%9A%E5%A1%8A') )
Python 2.7 文档: urlparse
编辑:
在使用Python 2.7
进行测试后,它需要在unquote()
encode()
才能使用str
(纯文本)而不是unicode
#-*- coding: utf-8 -*-
import urlparse
url = u'/wiki/Category:%e6%89%93%E7%A3%9A%E5%A1%8A'
url = url.encode('utf-8') # convert `unicode` to `str`
url = urlparse.unquote(url) # convert `%e6%89%93%E7%A3%9A%E5%A1%8A` to `打磚塊`
print url
print type(url)
print '打磚塊' in url
结果
/wiki/Category:打磚塊
<type 'str'>
True
顺便说一句:对于Python 3
也是如此 - 它不需要encode()
import urllib.parse
url = u'/wiki/Category:%e6%89%93%E7%A3%9A%E5%A1%8A'
url = urllib.parse.unquote(url) # convert `%e6%89%93%E7%A3%9A%E5%A1%8A` to `打磚塊`
print(url)
print(type(url))
print('打磚塊' in url)
结果:
/wiki/Category:打磚塊
<class 'str'>
True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.