Joachim Siebert: Encoding: Alle Sonderzeichen werden zu �

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

  1. 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 &#65533; 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

    --
    Wenn du beim Kochen etwas heißes Wasser übrig hast, friere es ein.
    Heißes Wasser kann man immer gebrauchen.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. @@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 &#65533; ersetzt werden.

    Sag doch gleich � U+FFFD. Die dezimale Angabe von Zeichencodes ist nicht hilfreich.

    Wie werden die Daten zwischendurch verarbeitet? (Datenbank?)

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. 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