problem mit Umlauten beim IIS
Scar
- php
0 André Laugks0 dedlfix0 Scar
hallo,
eines meiner projekte wird auf dem IIS eingesetzt, während lokal auf dem apache keine fehler auftreten werden auf dem IIS umlaute nicht korrekt übermittelt und verarbeitet.
das problem zeigt sich wie folgt:
im HTML soll als beispiel ein ä ausgegeben werden. aus irgendeinem grund wird aber immer ä ausgegeben?!.. die verarbeitung der ausgabe erfolgt mit smarty, nur vermute ich eher einen fehler bzw eine besonderheit(?) im IIS.
wird ein umlaut an den webserver übermittelt kommen ebenfalls solche seltsamen zeichen an.
kann mir jemand nen tip geben, wie ich mein problem lösen kann?
grüße Chris
Hallo!
im HTML soll als beispiel ein ä ausgegeben werden. aus irgendeinem grund wird aber immer ä ausgegeben?!.. die verarbeitung der ausgabe erfolgt mit smarty, nur vermute ich eher einen fehler bzw eine besonderheit(?) im IIS.
wird ein umlaut an den webserver übermittelt kommen ebenfalls solche seltsamen zeichen an.
Hast Du im HTML-Header das Charset definiert?
Welches Charset ist unter Ansicht->Condierung im IE gesetzt? Also ohne das Du es selbst geändert hast?
Versuche mal bitte folgendes:
Setzte bitte mal am Anfang des PHP-Scriptes:
header("Content-type: text/html; charset=ISO-8859-1");
Ich vermute mal, dass im IIS mit dem Default-Charset UTF-8 konfiguriert ist und der IE dann UTF-8 dann verwendet, egal was im HTML-Header steht.
Ich hatte das letztens in ePages gehabt. ePages verpasst alle Dokumente mit dem Charset UTF-8. Im Dokument war im HTML-Header das Charset ISO-8859-1 definiert, den IE hat das aber nicht interessiert. Der hat sich nur für das Charset interessiert, den der Server (den ePages vorgegeben hat) gesendet hat.
André Laugks
echo $begrüßung;
im HTML soll als beispiel ein ä ausgegeben werden. aus irgendeinem grund wird aber immer ä ausgegeben?!..
Der "irgendein Grund" ist dieser: Der an den Client übertragene Text ist UTF-8-kodiert. Der Client bekommt das aber nicht oder falsch gesagt und nimmt hier an, es handele sich um eine ISO-8859-1-Kodierung. (Ohne die betreffende Seite gesehen zu haben ist das natürlich nur eine Vermutung, die auf den gegebenen Indizien beruht.) Ein UTF8-kodiertes ä (0xc3 0xa4) wird wenn es als ISO-8859-1 interpretiert wird als ä angezeigt.
Hast Du im HTML-Header das Charset definiert?
Wenn:
"Ja, <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> ist vorhanden"
umschreiben auf <meta http-equiv="content-type" content="text/html; charset=UTF-8">
"Ja, <meta http-equiv="content-type" content="text/html; charset=UTF-8"> ist vorhanden"
Nein.
Der Server (IIS) sendet eine Charset-Angabe im HTTP-Header mit, die nicht UTF-8 ist. Wenn eine Charset-Angabe im HTTP-Header vorhanden ist, wird diese verwendet und der Meta-Tag nicht weiter beachtet.
Bei "Nein" wäre dann auch noch diese Frage relevant:
Welches Charset ist unter Ansicht->Condierung im IE gesetzt? Also ohne das Du es selbst geändert hast?
Versuche mal bitte folgendes:
Setzte bitte mal am Anfang des PHP-Scriptes:
header("Content-type: text/html; charset=ISO-8859-1");
Ein header("Content-type: text/html; charset=utf-8"); sollte es schon sein.
Alternativ wäre noch die Konfiguration des IIS zu überprüfen und die Charset-Angabe zu korrigieren oder zu entfernen.
Ich vermute mal, dass im IIS mit dem Default-Charset UTF-8 konfiguriert ist und der IE dann UTF-8 dann verwendet, egal was im HTML-Header steht.
Ersetze "UTF-8" durch "ISO-8859-1" dann dürfte die Vermutung stimmen.
Ich hatte das letztens in ePages gehabt. ePages verpasst alle Dokumente mit dem Charset UTF-8. Im Dokument war im HTML-Header das Charset ISO-8859-1 definiert, den IE hat das aber nicht interessiert. Der hat sich nur für das Charset interessiert, den der Server (den ePages vorgegeben hat) gesendet hat.
siehe oben.
echo "$verabschiedung $name";
hallo,
erstmal danke für die antworten.
sowas wie das von euch geschriebene hatte ich zwar vermutet, allerdings kann ich die genannten fehlerquellen nicht in dieser form finden.
die codierung der seite im html-code war anfänglich UTF-8, da dort allerdings bereits die fehler aufgetreten sind und ich den fehler nicht finden konnte, hab ich das encoding im html auf iso-8859-1 geändert. in beiden fällen wurde im ie und ff die richtige codierung verwendet, die anzeige ist aber noch immer falsch.
ich hab jetzt zusätzlich mit header() das encoding wie geschrieben auf iso-8859-1 festgesetzt, es wird aber noch immer falsch wiedergegeben.
gibt es noch irgendeine interne konfiguration die sowas in der verarbeitung von php oder dem iis verursachen kann?
grüße Chris
Hallo,
die codierung der seite im html-code war anfänglich UTF-8, da dort allerdings bereits die fehler aufgetreten sind und ich den fehler nicht finden konnte, hab ich das encoding im html auf iso-8859-1 geändert. in beiden fällen wurde im ie und ff die richtige codierung verwendet, die anzeige ist aber noch immer falsch.
ich hab jetzt zusätzlich mit header() das encoding wie geschrieben auf iso-8859-1 festgesetzt, es wird aber noch immer falsch wiedergegeben.
Hast Du den Quellcode der HTML-Seiten auch in ISO-8859-1 abgespeichert? Will sagen: Wenn es doch erst UTF-8 war, wie Du sagst, hast Du dann Deinen HTML-(Quellcode)-Editor auf ISO-859-1 umgeschaltet oder speichert der immer noch UTF-8?
viele Grüße
Axel
Hallo,
das gesamte HTML ist inzwischen auf ISO umgestellt, der content-type ist ebenfalls auf iso umgestellt.
grüße Chris
echo $begrüßung;
das gesamte HTML ist inzwischen auf ISO umgestellt, der content-type ist ebenfalls auf iso umgestellt.
Nur mal um sicher zu gehen, dass du das auch richtig angewendet/verstanden hast: Wenn du eine der Seiten direkt als Datei, und nicht über einen Webserver gehend, im Browser öffnest (auch wenn es dann ungeparste PHP-Dateien sind) und im Browser die Zeichenkodierung auf ISO-8859-1 stellst, werden dann die Umlaute richtig dargestellt? Wenn ein ä immer noch als ä erscheint, dann ist die Seite immer noch auf UTF-8 eingestellt. Wenn du dagegen ä's siehst ist alles in Ordnung. Wenn du ä und ä gemischtet siehst, dann hast du noch ein ganz anderes Problem ...
echo "$verabschiedung $name";
P.S. Einen französischen Text in einen Briefumschlag mit der Aufschrift "Englisch" zu stecken, erspart nicht den Übersetzer.