Django应用中的UnicodeEncodeError
我正在尝试在webfaction上使用Django创建一个应用程序。基本上,我在玩亚马逊的API,当搜索结果中有一个商标符号时,这个符号被传递到我的模板里……就出现了错误。我收到的错误信息是:
在渲染时捕获到UnicodeEncodeError:'ascii'编解码器无法在位置9编码字符u'\u2122':序号不在范围内(128)
我想知道有没有人知道怎么解决这个问题。
2 个回答
1
是的,u'\u2122'
是商标符号。在你的代码中,应该有以下操作:
- 使用支持这个字符的编码方式来处理你的unicode数据,比如utf8、cp1250到cp1258等。
或者
- 避免自动进行意外的解码(因为它使用的是ascii,而ascii不支持这个字符)。
具体需要做哪个操作,以及在哪里做,我就不清楚了,因为你没有提供错误追踪信息…… 请 编辑你的问题,添加完整的错误追踪信息,并把它格式化成代码,这样更容易看。
3
这可能是因为你在对一段unicode数据使用了str()
这个函数。其实,str
这个函数可以叫做ascii
,这样更能说明它的作用!你的模板完全可以处理unicode数据,所以既然你在用Django,我猜问题可能出在某个__unicode__
方法上或者类似的地方。
unicode是个比较复杂的概念,可以在网上搜索一下python unicode
来了解一下。
如果不看到更多的代码,很难进一步帮助你,但大致的意思是尽量在你的应用中使用unicode字符串!Python有一个unicode()
方法,它的功能和str
方法对简单字符串的作用是一样的,但对于unicode字符串也能很好地工作——用这个会更好。