Django'ascii'编解码器不能编码字符 [英] Django 'ascii' codec can't encode character

查看:113
本文介绍了Django'ascii'编解码器不能编码字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Django中,我想使用一个简单的模板标签来截断数据。



这是我到目前为止:

  @ register.filter(name ='truncate_simple')
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)] +'...'
/ pre>

但是当我使用它时,我会收到以下错误:

  {{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'编解码器不能编码字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆