我使用 Pylons 框架,Mako 模板用于基于网络的应用程序。我并没有太深入了解 Python 处理 unicode 字符串的方式。当页面呈现时我确实看到我的网站崩溃,我有一个紧张的时刻,后来我知道它与 UnicodeDecodeError 有关。 .
看到错误后,我开始围绕我的 Python 代码进行网格化,使用“忽略”选项添加对字符串的编码、解码调用,但有时我仍然看不到错误消失了。
最后,我使用 ignore 解码为 ascii 并使网站运行而没有任何崩溃。
我网站的输入来自许多网站。这意味着我无法控制选择的语言或语言。我的网站支持国际语言和英语。我有 feed 聚合,通常不关心 unicode/ascii/utf-8。当我通过 mako 模板显示文本时,我按原样显示。
不是网络专家,在 Python 项目中处理字符串的最佳做法是什么?我应该只关心呈现文本还是应用程序的所有阶段?
最佳答案
如果你对它有影响,这是无痛的方式:
- 了解您的输入编码(或忽略解码)并在数据到达您的应用后立即对其进行
解码(编码)
- 仅在内部使用 unicode(
u'something'
是 unicode),也在数据库中工作 - 为了呈现、导出等,只要它离开您的应用,
encode('utf-8')
数据
关于python - Python UnicodeDecodeError 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933911/