我使用幽门框架,Mako模板为基于web的应用程序。我对Python处理unicode字符串的方式并没有太深的兴趣。当我看到我的站点在呈现页面时崩溃时,我感到很紧张,后来我知道它与UnicodeDecodeError有关。
在看到错误后,我开始在Python代码周围添加代码,用“忽略”选项解码字符串调用,但我仍然看不到错误的消失。
最后,我过去常常用忽略来解码到ascii,使站点在没有任何崩溃的情况下运行。
输入到我的网站通过许多网站。这意味着我无法控制所选择的语言或语言。我的网站支持国际语言和英语。我有提要聚合,通常不需要考虑unicode/ascii/utf-8。当我通过mako模板显示文本时,我会按原样显示。
不是一个网络专家,在project中处理字符串的最佳实践是什么?在呈现文本或应用程序的所有阶段时,应该只关心吗?
发布于 2010-10-14 14:01:58
如果你对它有影响,这就是无痛的方法:
decode(encoding)。u'something'是unicode),也是在数据库中encode('utf-8')数据发布于 2010-10-14 15:04:10
这对您来说可能不是一个可行的选择,但让我说,在使用python 3时,大量与编码相关的错误消失了,这仅仅是因为unicode字符串和字节对象之间的分离变得更加清晰了。当我不得不使用python2时,我选择版本2.6,您可以在其中声明from future import unicode_literals。不信的人实际上应该读你发布的链接,因为它指出了Python的en/解码行为的一些微妙之处,幸运地在Python3中消失了。
你说
我不控制选择的语言或语言。我的网站支持国际语言和英语。我有提要聚合,通常不关心unicode/ascii/utf-8。
好吧,不管你选择做什么,很明显你不想让你的web应用程序崩溃,仅仅因为你使用的一些d nish bl gger的提要选择了用一个不知名的斯堪的纳维亚编码方案来编码他们的文章。底层问题与所有web应用程序相关,因为URL不携带编码信息,而且您永远不知道恶意用户可能希望发送的字节序列。在这种情况下,我做我所说的‘安全链解码’:我试图首先解码为utf-8,如果这应该失败,再尝试使用cp1252。如果失败,我将放弃请求(HTTP 404)或类似的内容。
你提到你处理饲料和你?饲料?不要为unicode和编码“操心”。你能澄清这句话吗?它完全回避了我如何能够成功地建立一个网站,以多种语言的文本,而不关心编码。显然,只使用ascii不会让你走得太远。
https://stackoverflow.com/questions/3933911
复制相似问题