2015-03-13 106 views
3

我需要對日文單詞編碼進行編碼,以適應鏈接中單詞的編碼。問題是,當我編碼他們稍微關閉。需要幫助編碼日語

我需要它是:

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

,而不是它的:

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

我已經玩了一段時間,但一直沒能得到它的工作。關於我能做什麼的任何想法?

+0

請參閱dupe目標的stdlib函數,它將執行所需的特殊字符。或者,對於* all *字符:'''.join([「%%% 02X」%ord(c)for c in s])' – jedwards 2015-03-13 20:22:25

回答

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的。所以不得不返回到字節串:

>>> urllib.quote(y.encode('utf-8')) 
'%E5%A4%89%E4%BD%93'