django app中的UnicodeEncodeError

时间:2011-06-03 22:22:10

标签: python django unicode webfaction

我正在尝试使用Django在webfaction上创建一个应用程序。我基本上搞乱了亚马逊API,当其中一个搜索结果有一个商标符号时,会传递给我的模板...错误被抛出。我收到了错误

Caught UnicodeEncodeError while rendering: 'ascii' codec can't encode character u'\u2122' in position 9: ordinal not in range(128)

并且想知道是否有人知道修复是什么。

2 个答案:

答案 0 :(得分:3)

这可能意味着您在一个unicode数据上调用str() - str函数可以被称为ascii以更好地描述它的作用!你的模板对unicode数据非常满意,所以假设你使用的是Django,我怀疑问题出在__unicode__方法或其他类似的。

Unicode是一个棘手的主题,让python unicode的Google感受到它。

Tricky在没有看到更多代码的情况下进一步帮助您,但要点是尝试在您的应用程序中使用unicode字符串! Python有一个unicode()方法,与简单字符串的str方法完全相同,但也适用于unicode字符串 - 最好使用它。

答案 1 :(得分:1)

是的,u'\u2122'是商标标志。在代码的某处,您应该是:

  • 使用支持该字符的编解码器(utf8,cp1250到cp1258等)对您的unicode数据进行编码

  • 避免自动意外解码(使用ascii,不支持该字符)。

需要采取哪些措施?不知道,因为你还没有提供追溯...... 编辑你的问题以包含完整的追溯,并将其格式化为代码,以便它清晰可读。