Problem mit Unicode, kyrillischer Schrift und CSS
city2000
- html
0 迪拉斯0 Axel Richter
Hallo,
habe vor vier Jahren eine Seite in mehreren Sprachen erstellt, darunter auch in russischer Sprache, also in kyrillischer Schrift. Die jeweilige Übersetzung lag mir als Textdokument vor, die ich dann in das HTML-Dokument hineinkopierte. Wenn ich das Dokument jedoch mit meinem Editor (Phase5) abspeicherte, erschienen nicht mehr die kyrillischen Schriftzeichen, sondern Fragezeichen. Eine Anfrage in einem Forum ergab, dass ich das Dokument mit einem reinen Texteditor nicht unter ANSI sondern unter Unicode abspeichern müsse. Seit dem klappt die Sache.
Nun muss ich die Seite überarbeiten, die Technik hat sich geändert und ich arbeite jetzt mit CSS und tabellemlosen Design etc. und stehe daher vor folgedem Problem:
Den Code dieser <a href='http://www.augusta-apartments-baden-baden.de/aa_t/aa_p5000p.html'>Seite</a> habe ich mit Phase 5 abgespeichert. Dann habe ich exakt den gleichen Code mit einem Texteditor unter Unicode agespeichert, siehe diese <a href='http://www.augusta-apartments-baden-baden.de/aa_t/aa_p5000p_unicode.html'> Seite</a> , hier wird zwar die kyrillische Schrift korrekt dargestellt, dafür geht aber die CSS-Formatierung flöten.
Wer kann mir das Phänomen erklären bzw. einen Lösungsansatz nennen?
Danke und Gruss
city
Hey,
die Fakten:
http://www.augusta-apartments-baden-baden.de/aa_t/aa_p5000p.html
Content-Length: 3480
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Kein Zeichensatz angegeben, automatisch wird ISO-8859-1 angenommen.
http://www.augusta-apartments-baden-baden.de/aa_t/aa_p5000p_unicode.html
Content-Length: 6932
Content-Type: text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Kein Zeichensatz angegeben, automatisch wird UTF-16 (L) angenommen.
Der Vergleich zwischen den Dateien zeigt folgende Unterschiede:
< <p class='center'><img style='width:340px;padding-top:30px;' src="http://www.augusta-apartments-baden-baden.de/aa_pic/schultes3.jpg" alt="Baden-Baden" /></p>
<p><img style='width:340px;padding-top:30px;' src="http://www.augusta-apartments-baden-baden.de/aa_pic/schultes3.jpg" alt="Baden-Baden" /></p>
< <li class="nav2"><a href='http://www.augusta-apartments-baden-baden.de/sa_t/sa_p5100p_ru.html'><img src='http://www.augusta-apartments-baden-baden.de/aa_gfx/flag_ru.gif' title='' alt='' /> ????????????</a></li>
<li class="nav2"><a href='http://www.augusta-apartments-baden-baden.de/sa_t/sa_p5100p_ru.html'><img src='http://www.augusta-apartments-baden-baden.de/aa_gfx/flag_ru.gif' title='' alt='' /> здравствуйте</a></li>
hier wird zwar die kyrillische Schrift korrekt dargestellt, dafür geht aber die CSS-Formatierung flöten.
Das Bild ist etwas seitlich gerückt, weil im zweiten Dokument die Klasse center fürs umschließende <p> fehlt.
Hey!!
kann Dir leider nicht folgen,
der Zeichensatz wird doch über den Meta-Tag angegeben, bei beiden gleich.
Zum Zeitpunkt des Postings waren beide Seiten absolut identisch
Moin!
der Zeichensatz wird doch über den Meta-Tag angegeben, bei beiden gleich.
Nein. Das Meta-Tag hat nur die Aufgabe, dann zu wirken, wenn kein HTTP verwendet wird - im Internet also nie.
Und manchmal sind Server auch so konfiguriert, dass sie die Angaben im Meta-Tag lesen und die HTTP-Header entsprechend modifizieren.
In allen anderen Fällen - von denen man ausgehen muß - ist nicht entscheidend, was im Meta-Tag steht, sondern was im HTTP-Header gesendet wird. Und das ist offensichtlich nicht korrekt.
- Sven Rautenberg
Hallo,
Dann habe ich exakt den gleichen Code mit einem Texteditor unter Unicode agespeichert, siehe diese <a href='http://www.augusta-apartments-baden-baden.de/aa_t/aa_p5000p_unicode.html'> Seite</a>
Die Meta-Angabe zum Content-Type
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
widerspricht dem aber.
hier wird zwar die kyrillische Schrift korrekt dargestellt, dafür geht aber die CSS-Formatierung flöten.
Wer kann mir das Phänomen erklären bzw. einen Lösungsansatz nennen?
Schau mal in die JavaScript-Konsole des FireFox. Da findest Du:
Fehler: Unerwartetes Dateiende beim Suchen nach '',' oder '{''. Regelsatz wegen ungültigem Selektor ignoriert.
Quelldatei: http://www.augusta-apartments-baden-baden.de/aa_css/aa_main.css
Zeile: 1
Fehler: Unerwartetes Dateiende beim Suchen nach 'Schließendes } eines ungültigen Regelsatzes'.
Quelldatei: http://www.augusta-apartments-baden-baden.de/aa_css/aa_main.css
Zeile: 1
Da ist zwar kein Fehler, aber ;-).
Dein "Unicode" ist UTF-16LE. Dieses Encoding erfordert ein BOM (Byte Order Mark) am Dateianfang. Dieses BOM erwartet der FF jetzt auch bei der CSS-Ressource. Speicherst Du diese CSS-Ressource also auch als "Unicode" mit dem Encoding UTF-16LE und lässt sie auch mit
Content-Type: text/css; charset=UTF-16LE
ausliefern, dann funktioniert es.
Besser ist aber, Du speicherst die (X)HTML-Ressource als UTF-8 _ohne BOM_ (das ist wichtig!), dann kann Dein CSS weiter ASCII- oder ANSI-kodiert bleiben. Dort musst Du ja keine kyrillischen Zeichen verwenden.
viele Grüße
Axel