2011-04-21 64 views
4

在我的项目中,当我向窗体提交一些非ascii字符的数据时,我将所有非ascii数据替换为unicode替换字符\ ufffd。在从窗体接收数据的视图中,request.POST中存在这种格式错误的字符串。似乎我错过了一些明显的东西。Django用 ufffd替换非ascii字符

我的环境:

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

在使用本地和中间开发服务器转载此问题运行Apache + mod_wsgi的服务器,使用Firefox 4和Chrome 11.

Whe我应该看看解决这个问题吗?谢谢。

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

@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} 
+0

已经用代码更新了我的问题,谢谢。 – 2011-04-21 15:29:23

回答

0

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

+0

有没有更详细的说明呢?我得到了同样的错误,但我*做*在HTML中设置了字符集:( – 2013-12-31 02:00:55

0

使用魔法! smart_unicode from Django应该会对你有所帮助。在smart_unicode和smart_str之间进行混合,以确定是否要编码或解码字符串(用于任何后续项目;))。