本文介绍了Django'ascii'编解码器不能编码字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Django中,我想使用一个简单的模板标签来截断数据。
这是我到目前为止:
@ register.filter(name ='truncate_simple')
/ pre>
def truncate_char_to_space(value,arg):
截断一个一个给定长度的字符串
data = str(value)
if len(value)< arg:
返回数据
如果data.find('',arg,arg + 5)== -1:
返回数据[:arg] +'... '
else:
return data [:arg] + data [arg:data.find('',arg)] +'...'
但是当我使用它时,我会收到以下错误:
{{item.content | truncate_simple:5}}
错误:
'ascii'编解码器不能将字符u'\\\–'编码在位置84:序号不在范围(128)
错误在线开始
data = str(value)
为什么? p>
解决方案尝试使用unicode()来转换值(而不是str()):
data = unicode(value)
In Django I want to use a simple template tag to truncate data.
This is what I have so far:
@register.filter(name='truncate_simple') def truncate_char_to_space(value, arg): """ Truncates a string after a given length. """ data = str(value) if len(value) < arg: return data if data.find(' ', arg, arg+5) == -1: return data[:arg] + '...' else: return data[:arg] + data[arg:data.find(' ', arg)] + '...'
But when I use it I get the following error:
{{ item.content|truncate_simple:5 }}
Error:
'ascii' codec can't encode character u'\u2013' in position 84: ordinal not in range(128)
Error is on line starting
data = str(value)
Why?
解决方案try to use unicode() to convert value (instead of str()):
data = unicode(value)
这篇关于Django'ascii'编解码器不能编码字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!