FuchsT hat geschrieben:Ich hab ein kleines Tool für meinen Kollegen gemacht. Eigentlich nur ein Eingabefeld, damit der text dann in einer Datei gespeichert wird.
Wenn er nun Text aus einem .doc kopiert, dann werden alle umlaute komisch dargestellt. in etwa so: Bärentraube
Werden Umlaute als zwei Zeichen in der Art wie in Deinem Beispiel dargestellt, ist die Ursache, dass utf-8-kodierte Zeichen als iso-8859-1-kodierte Zeichen deklariert wurden.
utf-8 ist eine Methode, Unicode-Werte unfallfrei in herkömmlichen Texten unterzubringen.
Unicode ist eine universelle Zeichentabelle, die (derzeit) etwas über 1 Million Schriftzeichen definieren kann.
iso-8859-1 ist eine Zeichentabelle, die nur 256 Schriftzeichen definiert. Unicode roh benötigt vier Byte pro Zeichen, iso-8859-1 ein Byte. utf-8 kodiert die vier Bytes von Unicode in ein bis vier Bytes.
Dass das ä als ä dargestellt wird, liegt daran, dass ein Unicode/utf-8-Text ausgegeben (mit mehreren Bytes pro Zeichen), aber dem Browser erzählt wird, es handele sich um iso-8859-1 (mit nur einem Byte pro Zeichen).
Die zwei Unicode/utf-8-Bytes für das ä werden also als das dargestellt, was sie in iso-8859-1 darstellen, nämlich à (Byte 1) und ¤ (Byte 2).
gibt es eine möglichkeit die formatierungen, die word verwendet
Es sind keine Word-Formatierungen, Word ist auch (ausnahmsweise ;) nicht das Problem, sondern die Verarbeitung Deines Formulars.
Schau mal in Deinem Browser entweder im Menü Ansicht oder in den Seiteneigenschaften, welche Zeichentabelle er für das HTML-Formular sowie die Ausgabeseite verwendet; vermutlich steht in ersterem utf-8 oder Unicode, in zweiterem iso-8859-1 (oder das fast kompatible windows-1252).
Probiere als erstes, in dem HTML-Formular oben im <head>-Block
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
einzufügen. Alternativ kannst Du auch versuchen, dem <form>-Element das Attribut
accept-charset="iso-8859-1"
zu verpassen. Beides sollte dafür sorgen, dass der Browser die Formulardaten mit iso-8859-1 kodiert an den Webserver schickt, nicht mit utf-8.
Bist Du Dir der Stolpersteine bewusst (namentlich PHP, dessen Typ String alles ohne Ansehen der Zeichenkodierung frisst, was man ihm vorwirft), kannst Du alternativ auch die bessere Variante nehmen und mittels Content-Type die Ausgabeseite als utf-8 (also Unicode) deklarieren.
Unicode hat den Vorteil, sich nicht wie alle anderen Zeichentabellen an immer häufiger vorkommenden Zeichen wie € zu verschlucken. Als Dreingabe bekommst Du noch die ganze wunderbare Welt der Typographie, mitsamt hoch- und tiefgestellten Anführungszeichen und anderen Schmankerln.
Klappt das nicht, wäre eine URL, an der man sich das anschauen kann, nicht schlecht.