2016-11-04 22 views
0

當我得到一個散列映射鍵:從Redis的價值,它原來是這樣的:如何保存/獲取redis散列鍵爲unicode?

hmgetall {'<a href="/topic/\xd8\xb1\xd8\xaf\xdb\x8c\xd8\xb3-\xd8\xaa\xd8\xb3\xd8\xaa">\xd8\xb1\xd8\xaf\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb3\xd8\xaa</a>': '1'} 

雖然在蟒蛇保存爲unicoe。

所以我想知道如何將散列鍵保存爲unicode,以便它可以與unicode字符串進行比較?

我想關鍵要保存到它的Unicode格式是:

key = '<a href="/topic/\u0631\u062f\u06cc\u0633-\u062a\u0633\u062a">\u0631\u062f\u06cc\u0633 \u062a\u0633\u062a</a>' 

中,或者我希望能夠將密鑰轉換爲\xd8\xb1\xd8\xaf\...格式,這樣我可以比較它與redis'保存密鑰。我看過the docs,但找不到提示。

回答

1

假設你正在使用Python 2,和鍵/值被編碼爲UTF-8:

>>> redis_key = '<a href="/topic/\xd8\xb1\xd8\xaf\xdb\x8c\xd8\xb3-\xd8\xaa\xd8\xb3\xd8\xaa">\xd8\xb1\xd8\xaf\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb3\xd8\xaa</a>' 
>>> redis_key.decode('utf-8') 
u'<a href="/topic/\u0631\u062f\u06cc\u0633-\u062a\u0633\u062a">\u0631\u062f\u06cc\u0633 \u062a\u0633\u062a</a>' 

爲了對現有的密鑰:

>>> key = u'<a href="/topic/\u0631\u062f\u06cc\u0633-\u062a\u0633\u062a">\u0631\u062f\u06cc\u0633 \u062a\u0633\u062a</a>' 
>>> key.encode('utf-8') 
'<a href="/topic/\xd8\xb1\xd8\xaf\xdb\x8c\xd8\xb3-\xd8\xaa\xd8\xb3\xd8\xaa">\xd8\xb1\xd8\xaf\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb3\xd8\xaa</a>' 
+0

其實我需要做的其他方式,以便我可以將給定的utf8字符串與來自redis的值進行比較。你知道該怎麼做嗎? – supermario

+0

@supermario。我已經更新了我的答案,以展示如何在兩個方向上進行編碼。 – ekhumoro

相關問題