Kyrillisch/Russisch aus separater *.js Datei
Max Zingg
- javascript
0 Beate Mielke0 Beate Mielke0 Max Zingg
Guten Tag
Kyrillische Schrift aus JavaScript-Funktion in separater *.js-Datei wird im Microsoft Internet Explorer (5.0) nicht als solche wiedergegeben. Die nachstehend wiedergegebenen Dateien "kyrillisch.htm" und "separat.js" zeigen das Problem.
Separate JavaScript-Datei "separat.js":
function FunktionInSeparat()
{
document.write("òÕÓÓËÉÊ ÑÚÙË");
}
Html-Datei "kyrillisch.htm":
<html><head>
<meta http-equiv="content-type" content="text/html; charset=koi8-r">
<title>JavaScript-Test in Kyrillisch/Russisch</title>
<script language="JavaScript" src="separat.js" type="text/javascript"></script>
<script>
<!--
function FunktionInHead()
{
document.write("òÕÓÓËÉÊ ÑÚÙË");
}
//-->
</script>
</head><body>
(1) Html:<br>òÕÓÓËÉÊ ÑÚÙË
<p>
(2) JavaScript (document.write):<br><script>
<!--
document.write("òÕÓÓËÉÊ ÑÚÙË");
//-->
</script>
<p>(3) JavaScript ueber Funktion:<br><script>
<!--
FunktionInHead()
//-->
</script>
<p>(4) JavaScript ueber Funktion in separater Datei (separat.js):<br><script>
<!--
FunktionInSeparat()
//-->
</script>
</body></html>
Erläuterung: Der kyrillische Text (ins Deutsche übersetzt: Russische Sprache) ist auf vier verschiedene Arten vorgegeben: (1) als html-Text, (2) in JavaScript mit document.write, (3) als Funktion im head-Teil der html-Datei, (4) als Funktion in separater Datei "separat.js".
Problem: In den Fällen (1), (2) und (3) wird der Text sowohl im Netscape Communicator (4.6) also auch im Microsoft Internet Explorer (5.0) korrekt wiedergegeben. Im Fall (4) jedoch nur im Netscape Communicator, nicht aber im Internet Explorer. Ob die Sprache mit einer Meta-Angabe vorgegeben oder über Zeichensatz/Codierung gewählt wird, ändert nichts.
Wer weiss Rat? Für Hilfe Danke im Voraus.
Max Zingg
Hallo Max,
Kyrillische Schrift aus JavaScript-Funktion in separater *.js-Datei wird im Microsoft Internet Explorer (5.0) nicht als solche wiedergegeben>
function FunktionInSeparat()
{
document.write("òÕÓÓËÉÊ ÑÚÙË");
}
ich befuerchte, hier liegt ein weiterer Fall der Crossbrowserproblematik vor:
Wenn Du Sonderzeichen oberhalb der 128er-Grenze in einer separaten js-Datei benutzt, dann muessen die Zeichen fuer MSIE normal- bzw. unicodekonform-kodiert werden.
Also z.B. so:
function FunktionInSeparat()
{
document.write("üĉ u.s.w.");
/* Die von mir ausgesuchten Kodierungsbeispiele sind nicht aus dem russischen, die kannst Du aber von dieser Startseite aus finden:
http://nagual.pp.ru/~ache/koi8/main.html */
}
Bei Netscape ist es genau umgekehrt. Dort duerfen die Zeichen in einer externen Datei nicht kodiert werden.
Du kommst also nicht drumherum, fuer jeden Browser eine Extra-Variante einzubauen.
Viele Spass
Beate Mielke
Nachtrag:
document.write("ü? u.s.w.");
hier die Zeile nochmal mit Leerzeichen dazwischen (ich habe gerade nicht daran gedacht, dass die Zeichen bei Ansicht mit den Browsern ja gleich umgewandelt werden - also genau Dein Problem ;-))
document.write ("& u u m l ; & # 265 ; u.s.w.");
Viele Gruesse
Beate Mielke
Nachtrag:
document.write("ü? u.s.w.");
Hallo Beate
Ich weiss zwar nicht genau, was Crossbrowserproblematik heisst, habe aber verstanden. Und ausprobiert - es funktioniert.
Zu lange (monatelang) habe ich selbst herumgebastelt anstatt hier eine Anfrage zu machen. Und schon ist die Lösung da.
Den Aufwand, die Texte auf zwei Arten zu schreiben, nehme ich gern in Kauf. Denn der Zweck, damit eine Vielzahl von html-Dateien zu steuern, ist ja vollauf erreicht, so dass dieser Mehraufwand nicht ins Gewicht fällt.
Noch eine ergänzende Bemerkung: ein Bekannter in Russland hat das Ganze (mit meiner ursprünglichen Datei) ausprobiert. Bei ihm gab es das Problem nicht. Jetzt bin ich gespannt, ob auf einem im Osten vertriebenen Internet Explorer die Zeichen unrichtig widergegeben werden, wenn sie kodiert vorgegeben sind.
Schön, dass es "Leute" gibt, die sich solcher Fragen in diesem Forum annehmen (vielleicht sollte ich, mit doch langsam zunehmender Erfahrung, mich bei Gelegenheit auch mal engagieren). Herzlichen Danke also - deine Antwort ist mir wirklich eine grosse Hilfe.
Mit bestem Gruss
Max
Hallo Beate
Es ging wirklich mit Sonderzeichen. Aber mit kyrillischen Zeichen anscheinend doch nicht. Gibt man sie kodiert ein, so bleibt alles gleich, also im Internet Explorer erscheinen die entsprechenden lateinischen Zeichen - sie werden also nicht kyrillisch wiedergegeben. Vielleicht habe ich deine Antwort nicht ganz verstanden - aber gelöst ist das Problem für mich anscheinend doch noch nicht.
Übrigens habe ich meine (ursprüngliche) Datei einem Bekannten in Russland geschickt, und bei ihm gab es das Problem nicht. Anscheinend ist entweder das Betriebssystem (Windows 98) oder der Browser, wie er dort vertrieben wird, anders.
Ich wäre sehr froh, wenn du dich dem Problem nochmals annehmen könntest. Vielen Dank dafür im Voraus und mit bestem Gruss
Max
Hallo Max,
Ich wäre sehr froh, wenn du dich dem Problem nochmals annehmen könntest. Vielen Dank dafür im Voraus und mit bestem Gruss
Da hab ich Dich wohl gerade um Minuten verfehlt.
Also ich kenne das ganze Theater von einer anderen Sprache, deshalb vermute ich folgendes:
Du musst Dich wohl ganz zwischen der normalen und der Unicode-Kodierung entscheiden. Das bedeutet, Du benutzt entweder koi8-r (mit normaler Kodierung im Bereich 0 - 256, nicht die deutsche Kodierung) oder utf-8 (mit unicode-Codierung). Da ich das zweite sowieso fuer die Zukunft halte, wuerde ich mich daduer entscheiden.
Bedeutet also praktisch anstatt
<meta http-equiv="content-type" content="text/html; charset=koi8-r">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
In der js-Datei die entsprechenden unicodierten Ersetzungen. Unter Windows98 muesste das nun eigentlich funktionieren. Unter Windows95 kann es passieren, dass man noch Extra-Schriften aus dem Netz herunterladen muss.
Viele Gruesse
Beate Mielke
Du musst Dich wohl ganz zwischen der normalen und der Unicode-Kodierung entscheiden. Das bedeutet, Du benutzt entweder koi8-r (mit normaler Kodierung im Bereich 0 - 256, nicht die deutsche Kodierung) oder utf-8 (mit unicode-Codierung). Da ich das zweite sowieso fuer die Zukunft halte, wuerde ich mich daduer entscheiden.
Hallo Beate
Besten Dank für die Vorschläge. Sie lösen aber nicht das bestehende Problem, nämlich kyrillische Schriftzeichen in KOI18-R, die in einer separaten js-Datei enthalten sind, im Microsoft Internet Explorer korrekt darzustellen. Deine Vorschläge haben aber eine Lösung angeregt.
Über Funktionen im head der html-Datei werden kyrillische Buchstaben korrekt dargestellt. Auch ist es möglich, eine Funktion im head von einer Funktion aus aufzurufen, die in der separaten js-Datei enthalten ist, die wiederum aus dem body der html-Datei aufgerufen wird. Also müsste man im head für jeden Grossbuchstaben und jeden Kleinbuchstaben einen document.write-Befehl einfügen. Ist eine aus dem body aufgerufene kyrillische Zeichenfolge, die in der separaten js-Datei enthalten ist, wiederzugeben, so wäre der Befehl für jeden Buchstaben einzeln weiterzuleiten.
Damit könnten alle html-Dateien gleich aufgebaut werden und Zeichenfolgen in der js.datei geändert oder eingefügt werden, ohne an den html-Dateien Änderungen vornehmen zu müssen. Das sollte funktionieren. Es brauchte auch nicht unterschieden zu werden vom Netscape Communicator (für den das Ganze nicht notwendig wäre); denn der Ablauf würde auch dort klappen.
Mit nochmaligem Dank für dein Hilfe und mit besten Grüssen
Max Zingg
Hallo Max,
Noch eine ergänzende Bemerkung: ein Bekannter in Russland hat das Ganze (mit meiner ursprünglichen Datei) ausprobiert. Bei ihm gab es das Problem nicht. Jetzt bin ich gespannt, ob auf einem im Osten vertriebenen Internet Explorer die Zeichen unrichtig widergegeben werden, wenn sie kodiert vorgegeben sind.
Das wundert mich jetzt schon ein bisschen, koennte aber daran liegen, dass dort sowieso der russische Zeichensatz voreingestellt ist. Vielleicht haetten die ein aehnliches Problem, wenn sie deutsche Seiten produzieren wuerden.
Herzlichen Danke also - deine Antwort ist mir wirklich eine grosse Hilfe.
Freut mich, viele Gruesse
Beate Mielke