Django ersetzt nicht-ascii-Zeichen \ufffd
In meinem Projekt, wenn ich mich auf die übermittlung einiger Daten mit nicht-ascii-Zeichen, die form, die ich bin, immer alle nicht-ascii-Daten ersetzt, die mit unicode-replacement-Zeichen \ufffd. In der Ansicht erhält, dass die Daten aus dem Formular, habe ich diese fehlerhaften Zeichenfolgen in der Anfrage.POST. Scheint ich habe etwas verpasst, offensichtlich.
Meine Umgebung:
- Python 2.6
- Django 1.3 alpha 1
- MySQL 5.1 Datenbank verwendet UTF-8-Zeichensatz
Reproduziert haben dieses Problem mit Entwicklungs-server lokal und zwischengeschalteten server läuft Apache+mod_wsgi, mit Firefox 4 und Chrome 11.
Wo soll ich suchen zum workout-das problem? Danke.
Update: unten ist der code, den ich verwende -
@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}
Aktualisiert haben meine Frage mit dem code, vielen Dank.
InformationsquelleAutor Serge Tarkovski | 2011-04-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die Magie! smart_unicode von Django sollte Ihnen helfen, eine Menge. Mix zwischen smart_unicode und smart_str über, wenn Sie wollen, zu codieren oder zu decodieren einer Zeichenfolge (bei einem späteren Projekt ;)).
InformationsquelleAutor Cyril N.
Gelöst: ich vergaß hinzuzufügen, die Kodierung in HTML-Seiten, die ich bin, zu generieren. Hinzufügen von
<meta http-equiv="content-type" content="text/html; charset=utf-8">
das problem gelöst.InformationsquelleAutor Serge Tarkovski