2012-06-30 131 views
0

我抓取了一组网站并使用unicode编码的字符提取了不同的字符串,例如'D \ xfcsseldorf中最佳吃的地方'。我把它们存储在PostgreSQL数据库中。当我检索了从前面提到的数据库,做字符串:unicode字符显示不正确

name = string_retrieved_from_database 
print name 

输出为Unicode u'Best地方在d \ xfcsseldorf吃”。我想显示字符串,因为它应该是:'在杜塞尔多夫吃的最好的地方'。我怎样才能做到这一点。

+0

从搜索网站中获得的实际字节数是多少?很可能,你的错误是在那个时候引入的。 –

回答

3

你确定你得到输出吗当你打印变量,而不是交互式地显示它?使用print时,你不应该得到u'...'显示:

>>> 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 
+0

是的,实际上我的问题是没有正确的处理直接将它们存储到数据库,x.decode('unicode-escape')像一个魅力工作。 – PepperoniPizza

3

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

如果您需要帮助的详细信息,Pragmatic Unicode, or, How Do I Stop The Pain有他们所有。