我抓取了一组网站并使用unicode编码的字符提取了不同的字符串,例如“D \ xfcsseldorf中最好吃的地方”。我将它们存储在PostgreSQL数据库中。当我从数据库中检索前面提到的字符串并执行:
name = string_retrieved_from_database
print name
输出作为unicode u'Best在D \ xfcsseldorf'吃的地方。我想显示应该是的字符串:'在杜塞尔多夫最好吃的地方'。我怎么能这样做。
答案 0 :(得分:3)
您需要尽快处理编码。最好的方法是阅读HTML页面,解码你获得的字节串,然后将字符串作为Unicode存储在数据库中,或至少以统一编码(如UTF8)存储。
如果您需要有关详细信息的帮助,Pragmatic Unicode, or, How Do I Stop The Pain将全部包含在内。
答案 1 :(得分:3)
您确定在打印变量时获得输出,而不是仅以交互方式显示它吗?使用u'...'
时,您永远不应该显示print
:
>>> x = b"Best places to eat in D\xfcsseldorf"
>>> x.decode('latin-1')
u'Best places to eat in D\xfcsseldorf'
>>> print x.decode('latin-1')
Best places to eat in Düsseldorf
如果你在实际的字符串中得到反斜杠等等,那么在编码阶段可能会出现问题(例如,文字反斜杠被写入文本中)。在这种情况下,您可能需要查看“unicode-escape”编解码器:
>>> x = b"Best places to eat in D\\xfcsseldorf"
>>> print x
Best places to eat in D\xfcsseldorf
>>> print x.decode('unicode-escape')
Best places to eat in Düsseldorf