3
我需要對日文單詞編碼進行編碼,以適應鏈接中單詞的編碼。問題是,當我編碼他們稍微關閉。需要幫助編碼日語
我需要它是:
%E5%A4%89%E4%BD%93
,而不是它的:
b'\xe5\xa4\x89\xe4\xbd\x93'
我已經玩了一段時間,但一直沒能得到它的工作。關於我能做什麼的任何想法?
我需要對日文單詞編碼進行編碼,以適應鏈接中單詞的編碼。問題是,當我編碼他們稍微關閉。需要幫助編碼日語
我需要它是:
%E5%A4%89%E4%BD%93
,而不是它的:
b'\xe5\xa4\x89\xe4\xbd\x93'
我已經玩了一段時間,但一直沒能得到它的工作。關於我能做什麼的任何想法?
以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'
請參閱dupe目標的stdlib函數,它將執行所需的特殊字符。或者,對於* all *字符:'''.join([「%%% 02X」%ord(c)for c in s])' – jedwards 2015-03-13 20:22:25