0

我爬取了一组网站并提取了带有 unicode 编码字符的不同字符串,例如“D\xfcsseldorf 的最佳用餐地点”。我将它们存储在 PostgreSQL 数据库中。当我从数据库中检索前面提到的字符串并执行以下操作时:

name = string_retrieved_from_database
print name

输出为 unicode u'D\xfcsseldorf 的最佳用餐场所'。我想按应有的方式显示字符串:“杜塞尔多夫的最佳就餐场所”。我怎样才能做到这一点。

4

2 回答 2

3

您需要尽快处理编码。最好的办法是读取 HTML 页面,将得到的字节字符串解码为 Unicode,然后将字符串作为 Unicode 存储在数据库中,或者至少以统一编码(如 UTF8)的形式存储。

如果您需要有关详细信息的帮助,Pragmatic Unicode 或 How Do I Stop The Pain提供了所有信息。

于 2012-06-30T01:19:33.030 回答
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
于 2012-06-30T01:22:48.900 回答