需要帮助编码日语

时间:2015-03-13 20:16:59

标签: python

我需要编码日语单词编码以适应链接中单词的编码。问题是,当我对它们进行编码时,它们会稍微关闭。

我需要它:

%E5%A4%89%E4%BD%93

而不是:

b'\xe5\xa4\x89\xe4\xbd\x93'

我已经玩了一段时间了,但还是无法让它发挥作用。关于我能做什么的任何想法?

1 个答案:

答案 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'