Django将非ASCII字符替换为\ufffd。

4
在我的项目中,当我向表单提交一些包含非ASCII字符的数据时,所有非ASCII数据都会被替换为Unicode替换字符\ufffd。在接收来自表单的数据的视图中,我在request.POST中得到了这些格式不正确的字符串。看起来我错过了一些显而易见的东西。
我的环境:
Python 2.6 Django 1.3 alpha 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}

已经更新了我的问题并附上了代码,谢谢。 - Serge Tarkovski
2个回答

0

使用魔法吧!Django中的smart_unicode应该会对你有很大帮助。在处理需要编码或解码字符串时可以混合使用smart_unicode和smart_str(对于任何后续项目都适用)。


0

已解决:我忘记在生成的HTML页面中添加编码。添加<meta http-equiv="content-type" content="text/html; charset=utf-8">解决了问题。


还需要进一步详细说明吗?我收到了相同的错误,但是我确实在HTML中设置了字符集:( - Dan Gayle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接