Encoding: Alle Sonderzeichen werden zu �
Joachim Siebert
- html
Hallo,
ich habe das folgende Problem:
In einer Webform werden Daten erfasst. Das klappt zu 99% ohne Probleme.
Gelegentlich kommt es vor, dass dort Daten erfasst werden wo alle Sonderzeichen (ÖÄÜöäü?@€ usw.) durch ein � ersetzt werden.
Das mit mein HTML Kopf:
<html>
<head> ...
<meta http-equiv='Pragma' content='no-cache'>
<meta http-equiv='Cache-Control' content='no-store'>
<meta http-equiv='Content-Type' content='text/html;charset=iso-8859-1'>
...
<form accept-charset='ISO-8859-1' name='test' action="worder.asp" method="POST">
Die Seiten laufen auf Classik ASP/Win2008/IIS
Das Problem tritt bei den folgenden Browsern auf:
Mozilla/5.0 (Windows NT 6.1, rv:2.0) Gecko/20100101 Firefox/4.0
Mozilla/5.0 (Windows NT 5.1, rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Mozilla/5.0 (Windows NT 6.1, WOW64, rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Wer hat eine Idee, wie ich das Problem lösen kann?
Danke!
Joachim
Hi,
In einer Webform werden Daten erfasst. Das klappt zu 99% ohne Probleme.
Gelegentlich kommt es vor, dass dort Daten erfasst werden wo alle Sonderzeichen (ÖÄÜöäü?@€ usw.) durch ein � ersetzt werden.
also doppelt verstümmelt: Erstens das Zeichen U+FFFD, das eine fehlerhafte, nicht decodierbare Bytefolge in UTF-8 signalisiert, und das auch noch als NCR?
Also gibt's irgendwo Diskrepanzen mit der Zeichencodierung. Wobei U+FFFD eigentlich ein Indiz dafür ist, dass UTF-8 erwartet wird, aber eine andere Codierung geliefert wird.
* In welcher Codierung liegt das HTML-Dokument *tatsächlich* vor?
* In welcher Codierung wird es vom Server deklariert (HTTP-Header)?
* In welcher Codierung werden die Formulardaten verschickt?
* In welcher Codierung werden sie vom verarbeitenden Script erwartet?
<meta http-equiv='Content-Type' content='text/html;charset=iso-8859-1'>
Diese Angabe kommt wahrscheinlich nicht zum Tragen - es sei denn, der Server macht keine Aussage darüber. Aber gehen wir mal davon aus, dass du tatsächlich ISO-8859-1 verwendest und der Server das auch korrekt angibt.
<form accept-charset='ISO-8859-1' name='test' action="worder.asp" method="POST">
Okay, hier nochmal explizit ISO-8859-1. Tja, offenbar erwartet dein Script worder.asp die Eingaben aber in UTF-8. Das heißt, alle nicht-ASCII-Zeichen, die in der ISO-Codierung durch ein Byte im Bereich 80..FF repräsentiert sind, werden als Fehler markiert.
So long,
Martin
@@Joachim Siebert:
nuqneH
In einer Webform werden Daten erfasst. Das klappt zu 99% ohne Probleme.
Das kann ich mir bei ISO 8859-1 nicht vorstellen. Das Zeichen '€' kann damit nicht codiert werden. Warum verwendest du nicht UTF-8? [qa-forms-utf-8]
Gelegentlich kommt es vor, dass dort Daten erfasst werden wo alle Sonderzeichen (ÖÄÜöäü?@€ usw.) durch ein � ersetzt werden.
Sag doch gleich � U+FFFD. Die dezimale Angabe von Zeichencodes ist nicht hilfreich.
Wie werden die Daten zwischendurch verarbeitet? (Datenbank?)
Qapla'
Also als Nachtrag:
Die Daten werden in einer MSSQL 2008 express zwischengespeichert. Auch dort steht schon das falsche Zeichen drin.
Der Webserver steht auf iso-8859-1:
Anforderungen: iso-8859-1
Antworten: iso-8859-1
Antwortheader: iso-8859-1
Datei: Windows-1252
Kultur: Deutsch (Deutschland) (de-DE)
Das Merkwürdige ist das es nur mit ein paar Browsern nicht geht :-(
Ich denke ich werde mal alles auf uft-8 umstellen - alles ist besser als ein Zeichen, dass alles sein kann ;-)
Joachim