Iframe und txt-datei - Wie bekomme ich die Umlaute im Browser angezeigt?

5 Antworten

Kannst Du einen Link zu Deiner Seite posten, damit man sich das mal selbst ansehen kann?

Als erste Anlaufstelle bei Problemen eignet sich http://validator.w3.org/ Was hält der Validator von Deiner Seite? Findet er einen Fehler? Man sollte immer mit dem ersten angezeigten Fehler anfangen, denn oft beruht der ganze Murks, der hinterher angezeigt wird, auf dem ersten Fehler und löst sich bei Beseitigung desselben in Wohlgefallen auf.

Wenn der Browser sich entscheiden muss, was er mit Nicht-ASCII-Zeichen machen soll, die er auf einer Website findet, richtet er sich als erstes nach den HTTP-Headern, die vom Server verschickt werden. Welches Charset ist dort angegeben? Du kannst die HTTP-Header mit dem Raw-Browser von SamSpade sehen ( chip.de/downloads/Sam-Spade_15234479.html ) oder mit dem Firefox-Addon "Live HTTP-Headers" ( addons.mozilla.org/de/firefox/addon/live-http-headers/ ).

Falls der Server sich über den zu verwendenden Charset ausschweigt, kommen die "meta http-equiv"-Tags zum tragen, die im Head-Bereich Deiner Seite stehen, z.B.

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">

Falls der Browser auch da nichts findet, rät er. Das klappt meistens, aber manchmal kann er auch völlig danebenliegen.

Wie gesagt: Poste mal einen Link, dann kann man Dir eher weiterhelfen.


Schreiberling35 
Beitragsersteller
 08.08.2011, 10:17

Die Seite ist noch nicht online. Ich programmiere diese gerade unter einer Xammp-Umgebung.

Habe mal utf-8 probiert, dabei stimmen dann die Umlaute aus der ausgelesenen text datei nicht, ansonsten beim rest der seite stimmt alles.

nutze ich iso-8859-2 oder auch -1 sind alle umlaute der textlinks nicht mehr erkennbar (iÄ1/4 wird an gezeigt).

dann muss ich die texte aus der text.datei wohl doch in einer datenbank speichern und per php auslesen.

0
heffenberg  08.08.2011, 13:34
@Schreiberling35

Bist Du denn sicher, dass die Sonderzeichen in test.txt in UTF-8 codiert sind?

Mit z.B. PSPad http://www.pspad.com/de/ kannst Du unter
Werkeuge/Text konvertieren ...
problemlos ISO-8859-1 in UTF-8 umwandeln.

Du solltest sowohl für den Quelltext Deiner Seite als auch für test.txt den gleichen Zeichensatz verwenden und diesen dem Browser mit "meta http-equiv" mitteilen. Ausserdem sollte natürlich der HTTP-Header Deines Servers dazu passen, was Du mittels
AddDefaultCharset UTF-8
(oder AddDefaultCharset ISO-8859-1, falls Dir das lieber ist)
in der httpd.conf erreichen kannst.

googeln nach
xampp charset
führt Dich übrigens schnell zu der Erkenntnis, dass schon verschiedene Leute vor Dir ein ähnliches Problem hatten, vielleicht hilft Dir eine ihrer Lösungen weiter.

0
heffenberg  08.08.2011, 13:59
@heffenberg

Sorry, da hat mich bezüglich PSPad die Erinnerung getrogen. Hier eine Anleitung, die funktioniert:

"Lade ISO in PSPad, öffne eine neue Datei und stelle im Menu "Format" UTF-8 ein, am besten mit "Unix-LF" (falls ein Apache unterwegs ist). Dann per "copy&paste" umwandeln und speichern, fin...

Neue UTF-8 Datei erstellen ist relativ einfach, aber gefährlich mit PSPad. PSPad merkt sich die letzte Formatierung, also wenn ISO das letzte war, benutzt er bei einer neuen Datei auch ISO. War UTF-8, dann dito."
http://www.homepage-forum.de/showthread.php?t=44444&page=2#post_message_326708

0

Das ist ein zugegebener massen doofes Thema. Viele tun so als ob es sehr einfach wäre, aber glaub mir ich (min 10 Jahren Programmier Erfahrung) tue mich da auch öfters schwer.

Um dir das Thema komplett zu erklären müssen wir erstmal tief in den Computer gucken. Der kann nämlich nur 1 und 0 auswerten. Ein Zeichen speichert er als acht 1 oder 0er. Das nennt man ein Byte. Das sieht dann ungefähr so aus: 10011101. Damit du nicht diese komische Zahl siehst sondern einen Buchstaben muss der Computer eine Tabelle hinzu ziehen um diese Zahl in ein lesbares Zeichen um zu wandeln. Es gibt viele solcher Tabellen. Ascii, ansi, iso, utf8, utf16 etc... Bei einer Tabelle steht für 10011101 der Buchstabe "i", bei einer ganz anderen Tabelle ist es ein "?" und in einer dritten Tabelle ist es vielleicht ein "Smily". Deshalb sollten alle Dateien und Daten in der gleichen Zeichencodierung gespeichert bzw. ausgeliefert werden. Mit dem charset im HTML Head sagst du dem Browser dann "die Daten die du empfängst setzt du mit folgendem Zeichencode um". Der Computer muss diesen Zeichencode natürlich unterstützen. Das sollte bei den gängigsten Zeichencodes kein Problem darstellen. Jetzt musst du noch dafür sorgen dass alle Daten auch in diesem Zeichencode ausgeliefert werden. Bei deinem speziellem Problem wird der Browser wahrscheinlich utf8 erwarten, die Textdatei hat jedoch iso oder umgekehrt. Einfach den charset im HTML Head ändern hilft nix, da du das Problem nur verschiebst. Trifft du die Zeichencodierung der Textdatei werden die Sonderzeichen deines Scriptes verrückt spielen. Du musst eines von beiden in den passenden Zeichencode umwandeln. Alternativ kannst du HTML Entitys benutzen. Das sind spezielle Zeichenabfolgen die Sonderzeichen kennzeichnen. Wenn wirklich alle Sonderzeichen mit solchen Entitys ersetzt wären, dann wäre die Zeichencodierung "fast" egal. Ist halt nicht sauber programmiert.

Gruß

Die anderen Antworten haben es ja bereits umrissen: Mantelseite und iFrame sollten den selben Zeichensatz verwenden. Firefox erkennt unterschiedliche Zeichensätze alleine, Chrome jedoch nicht (FEB 2015). Wenn man Zugriff auf die Original-Datei des iFrame-Inhaltes hat, ist die Lösung einfach: dem Dokument den verwendeten Zeichensatz mitteilen. Hat man keinen Zugriff, weil es ein externes Dokument auf einem fremden Server ist, habe ich leider auch noch keine Lösung gefunden.

Gehe hier ganz oben in der Leiste auf 'Ansicht' > 'Zeichencodierung' und dort auf 'Unicode (UTF-8) klappt das nicht, probiere einen anderen Code von dort aus.


Schreiberling35 
Beitragsersteller
 07.08.2011, 03:43

Und wenn jetzt mein Homepage Besucher auch die falsche Zeichencodierung hat?

0
Elroy7000  07.08.2011, 10:07
@Schreiberling35

Deshalb gibst du ja auch deiner HTML Datei ein Charset. Was du oder deine Besucher in ihrem Browser einstellen ist in diesem Fall unerheblich.

0

Indem du deiner Datei das richtige Charset gibst. Es sollte immer die gleiche Zeichenkodierung sein die auch der Server benutzt.