1

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

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

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

4

2 回答 2

3

这可能意味着您正在调用str()一段 unicode 数据 -str可以调用该函数ascii来更好地描述它的作用!您的模板将对 unicode 数据完全满意,因此鉴于您使用的是 Django,我怀疑问题出在__unicode__方法或类似方法上。

Unicode 是一个棘手的主题,有一个谷歌python unicode来感受一下。

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

于 2011-06-03T22:40:48.857 回答
1

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

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

或者

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

需要采取什么行动,在哪里?不知道,因为您没有提供回溯...编辑您的问题以包含完整的回溯,并将其格式化为代码,使其清晰易读。

于 2011-06-04T00:29:18.627 回答