我需要编码日语单词编码以适应链接中单词的编码。问题是,当我对它们进行编码时,它们会稍微关闭。
我需要它:
%E5%A4%89%E4%BD%93
而不是:
b'\xe5\xa4\x89\xe4\xbd\x93'
我已经玩了一段时间了,但还是无法让它发挥作用。关于我能做什么的任何想法?
答案 0 :(得分:1)
以b
开头的输出本身并不是编码。这就是Python如何表示原始字节串。如果您输入
print b'\xe5\xa4\x89\xe4\xbd\x93'
你真的得到変体
(如果你有一个不错的终端/字体)。编码实际上是utf-8。
>>> x=b'\xe5\xa4\x89\xe4\xbd\x93'
>>> y=u'変体'
>>> x.decode('utf-8') == y
True
但话又说回来,如果你做的话
>>> urllib.quote(y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1285, in quote
return ''.join(map(quoter, s))
KeyError: u'\u5909'
因为this issue。所以不得不回到bytestring:
>>> urllib.quote(y.encode('utf-8'))
'%E5%A4%89%E4%BD%93'