Sonderzeichen/Umlaute
Mona
- javascript
0 Felix Riesterer
Hi ich habe ein Drop-down Menü mit Sothink DHTML erstellt. Wenn ich die fertige Seite nun hochlade, erscheinen die Sonderzeichen im Javascript-Teil (ä, ö, ü, ß) ganz komisch. Ein Menüpunkt ist "Über mich" dort steht dann z.B. ("°<ber mich") also so ähnlich zumindest.
Ich hab mal im Internet dann rumgesucht und Sonderzeichen für Javascript gefunden... für das "Ü" wäre das %DC. Jetzt habe ich alle Sonderzeichen entsprechen geändert so "%DCber mich" und wieder hoch geladen.. aber es funktioniert wieder ncht und zeigt die geänderten Sonderzeichen so an, wie ich sie eingegeben habe, also so "%DCber mich".
//*alle Anführungszeichen hab ich nur Beispielshalber benutzt, die stehn nicht wirklich im Quellcode ;-)*//
Wie kann ich das lösen?
Lieber Mona,
Hi ich habe ein Drop-down Menü mit Sothink DHTML erstellt.
nicht gut. Ungeachtet Deiner Umlaute-Problematik muss ich Dir dringend ans Herz legen, so wesentliche Dinge wie eine Navigation völlig ohne Javascript umzusetzen, damit sie unter allen Umständen benutzbar ist! Google interpretiert z.B. kein JavaScript und findet damit auch Deine Unterseiten nicht.
Fazit: Lass' es bleiben!
Ich hab mal im Internet dann rumgesucht und Sonderzeichen für Javascript gefunden... für das "Ü" wäre das %DC.
Nein. %DC ist eine http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#escape@title=URL-Kodierung, damit Sonderzeichen in der URL korrekt übertragen werden können. Beispiel: http://www.google.de/search?q=�ber den D�chern
Jetzt habe ich alle Sonderzeichen entsprechen geändert so "%DCber mich" und wieder hoch geladen.. aber es funktioniert wieder ncht und zeigt die geänderten Sonderzeichen so an, wie ich sie eingegeben habe, also so "%DCber mich".
JavaScript schreibt die Umlaute in der Kodierung in Dein Dokument, in der sie im JavaScript-Code stehen. Wenn Du eine externe JavaScript-Datei benutzt, die z.B. in ISO-8859-1 kodiert ist, dann werden diese Umlaute auch in dieser Kodierung ins (X)HTML-Dokument geschrieben. Wenn das (X)HTML ebenfalls in ISO-8859-1 kodiert ist, dann passt ja alles. Kritisch wird es, wenn die Kodierungen nicht zusammenpassen.
Informiere Dich (z.B. in SELFHTML) über die möglichen Kodierungen von Webdokumenten und benutze einen sinnvollen Texteditor, der Dir Textdateien in den benötigten Kodierungen abspeichern kann.
Liebe Grüße,
Felix Riesterer.
JavaScript schreibt die Umlaute in der Kodierung in Dein Dokument, in der sie im JavaScript-Code stehen. Wenn Du eine externe JavaScript-Datei benutzt, die z.B. in ISO-8859-1 kodiert ist, dann werden diese Umlaute auch in dieser Kodierung ins (X)HTML-Dokument geschrieben. Wenn das (X)HTML ebenfalls in ISO-8859-1 kodiert ist, dann passt ja alles. Kritisch wird es, wenn die Kodierungen nicht zusammenpassen.
Strings in JavaScript haben keine Kodierung. Der Browser dekodiert eine JavaScript-Ressource und die Strings liegen dann als Unicode-Zeichen vor. Wenn der Browser die korrekte Kodierung kennt und das Script entsprechend kodiert ist, dann stehen alle Zeichen korrekt zur Verfügung. Wenn das geklappt hat, ist das Thema Kodierung gegessen und alles weitere kein Problem mehr. Auf der Ebene des JavaScript-Programmes gibt es keine Kodierung mehr, man kann also nicht sagen "JavaScript schreibt Umlaute in einer Kodierung ins Dokument". Und es ist auch kein (prinzipielles) Problem, wenn ein externes JavaScript anders kodiert ist als das HTML-Dokument - sofern Kodierungsangaben dem Browser die unterschiedlichen Kodierungen mitteilen.
Kodierung ist eine Technik zur Übertragung von Zeichen. Das erste, was der Browser tut, ist eine Dekodierung, und erst dann wird das JavaScript ausgeführt. "Nicht zusammenpassende" Kodierungen gibt es daher nicht. Es ist höchstens möglich, dass der Browser von der erkannten Kodierung des HTML-Dokuments auf die Kodierung einer externen JavaScript-Datei schließt, wenn der Webserver keine abweichende Kodierungsangabe für das Script liefert.
Wie gesagt liegt das Problem wahrscheinlich woanders:
Welche Kodierung verwendet die Script-Datei tatsächlich? Wurde es korrekt gespeichert?
Erkennt der Browser de Kodierung korrekt? Gegebenenfalls muss der Server dazu gebracht werden, eine Kodierungsangabe im HTTP-Header zu senden. Alternativ kann man ein charset-Attribut im script-Tag notieren, um die (abweichende) Kodierung anzugeben.
<script type="..." src="..." charset="ISO-8859-1"></script>
Wie gesagt dürfte das nur nötig sein, wenn der Browser sie nicht erkennen kann.
Mathias
also ob die datei richtig bzw überhaupt kodiert ist bin ich mir nicht sicher...
hier ist sie: click
auf der Seite vom Link müsst ihr z.B. anfahrt.htm anschauen
@@Mona:
auf der Seite vom Link müsst ihr z.B. anfahrt.htm anschauen
Dort ist lediglich zu lesen " Hier entsteht anfahrt". Sonst nichts, jedenfalls nicht ohne JavaScript. Das ist schlecht, weil bei etlichen Besuchern deiner Seite kein JavaScript ausgeführt wird. Darunter sind Besucher, denen du ganz gewiss Zugriff auf deine Inhalte geben möchtest. [DIALOG-ROBOT]
Um ein dynamisches Menü zu erstellen, benötigt man für moderne Browser auch gar kein JavaScript. Lediglich für IE 6 muss man etwas nachhelfen: mit JavaScript [SELFHTML] oder Hacks in conditional comments [Nicholls].
"" lässt erkennen, dass dein Quelltext in UTF-8 codiert ist, das ist gut. Allerdings mit BOM, das ist weniger gut. [QA-UTF8-BOM]
Allerdings gibt dein Server nicht die richtige Zeichencodierung UTF-8 an, sondern ISO 8859-1; das ist schlecht. Da musst du die Einstellungen deines Servers ändern. [QA-CHANGING-ENCODING, QA-HTACCESS-CHARSET]
Auch sollte die Zeichencodierung im Dokument als Meta-Angabe vorhanden sein. Ebenso eine Doctype-Angabe. [http://de.selfhtml.org/html/allgemein/grundgeruest.htm@title=SELFHTML]
Du missbrauchst Tabellen und Iframes zum Layouten. Warum? Für deine Zwecke ist werder das eine noch das andere sinnvoll.
Zur Gestaltung des Layouts dient CSS. [SELFHTML]
Da die Arbeit an der Website noch nicht allzuweit fortgeschritten ist, würde ich empfehlen, nochmal von vorn zu beginnen – ohne JavaScript, ohne Tabellen, ohne Iframes. Eventuell möchtest du das Menü auslagern. [FAQ]
Live long and prosper,
Gunnar
Lieber Gunnar,
das ist doch mal ein vorbildliches Antwortposting, gespickt mit vielen hilfreichen Links - ich bin begeistert!
Liebe Grüße,
Felix Riesterer.