我已经阅读了许多相关问题,并且对如何处理这种情况有点不确定。
基本问题:在网站上处理“外国”(希伯来语,希腊语,阿拉姆语等)字符的最佳方法是什么?
我知道我需要使用UTF-8编码,但它背后的机制会丢失。
我使用龙卷风作为我的框架并将数据存储在redis中。
我目前的实现是简单地将英文键盘等效存储在数据存储中,然后使用适当的希伯来语/希腊字体(例如Bwhebb.ttf)在页面上呈现。在大多数情况下,这已经奏效了,但是我遇到了一些CGI编码的字符,这反过来会导致字体方法中断。
答案 0 :(得分:7)
您应该以unicode格式保存文本。
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
greek = u'αβγδ'
greek, type(greek)
# (u'\u03b1\u03b2\u03b3\u03b4', <type 'unicode'>)
r.set(u"greek", greek)
# True
虽然当你检索它时,Redis很可能会给你一个字节串,这不是你想要的:
greek2 = r.get(u"greek")
greek2, type(greek2)
# ('\xce\xb1\xce\xb2\xce\xb3\xce\xb4', <type 'str'>)
您希望将其转换为unicode,如下所示:
greek2 = unicode(r.get(u"greek"), "utf-8")
greek2, type(greek2)
# (u'\u03b1\u03b2\u03b3\u03b4', <type 'unicode'>)
答案 1 :(得分:3)
阅读评论中给出的文章。
简短的回答,在Redis中存储unicode,如果你使用的是Python 2.x,请在整个过程中使用unicode字符串(u""
)。从Redis中检索后,您可能需要转换为unicode(unicode()
),具体取决于它为您提供的内容。