Django 用\ufffd 替换非ascii 字符

标签 django unicode

在我的项目中,当我向表单提交一些带有非 ascii 字符的数据时,我将所有非 ascii 数据替换为 unicode 替换字符\ufffd。在从表单接收数据的 View 中,我在 request.POST 中有这个格式错误的字符串。看来我错过了一些明显的事情。

我的环境:

  • Python 2.6
  • Django 1.3 阿尔法 1
  • MySQL 5.1,数据库使用UTF-8字符集

使用本地开发服务器和运行 Apache+mod_wsgi 的中间服务器以及 Firefox 4 和 Chrome 11 重现了此问题。

我应该从哪里寻找解决问题的方法?谢谢。

更新:下面是我正在使用的代码 -

@render_to('mail/new_message.html')
@login_required
def new_message(request, user_id):
    user = request.user

    if request.method == 'POST':
        form = MessageForm(request.POST, request.FILES)
        # exclude attachment from init instance, because we need instance id
        # for saving attachment
        form._meta.exclude = ['attachment']
        if form.is_valid():
            new_msg = form.save()
            new_msg.sender = user
            if form.cleaned_data['attachment']:
                new_msg.attachment = form.cleaned_data['attachment']
            new_msg.save()
            message_sent.send(sender=None,instance=new_msg)
            return HttpResponseRedirect(reverse(messages))
    else:
        initial = {}
        if user_id:
            initial['receivers'] = [user_id,]
        form = MessageForm(initial=initial)
    return {'form': form}

最佳答案

使用魔法! smart_unicode from Django应该对你有很大帮助。如果您想对字符串进行编码或解码,请混合使用 smart_unicode 和 smart_str(对于以后的项目;))。

关于Django 用\ufffd 替换非ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5745987/

相关文章:

Elastic Beanstalk 上的 Django Weasyprint - 无法加载 GDK-Pixbuf

perl - 如何在 perl 中转储字符串以查看是否存在任何字符差异?

Python Selenium 页面无法保存源代码编码错误

Java compareTo 无法正确排序包含符号的字符串

Python pickle 在版本之间转换为 unicode

html - 使用 nav-pills 渲染 django 和 html

django - 处理 url 编码数据时 django rest 框架出现问题

django - 是否可以在 Django 中提供外部 URL 名称

python3如何将unicode代码点转换为unicode char

python - 具有隐藏所有网站页面的登录名和密码的 Django 中间件