2011-04-21 62 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之間進行混合,以確定是否要編碼或解碼字符串(用於任何後續項目;))。