escape: Wo ist der Unterschied?
Pete
- javascript
Hallo,
alert(unescape(escape('üöäpßßpöoijmklöööpoiklk \n ')));
alert(unescape(escape(document.f.inputarea.value)));
Ich habe in einem Dokument eine Textarea und lasse auf onClick die beiden Zeilen ausführen, wobei in der Textarea der gleiche String steht.
Dennoch bekomme ich zwei verschiedenen Ergebnisse.
Kann mir das jemand erklären? Ist es nicht egal von wo der String kommt?
Pete
Hi,
alert(unescape(escape('üöäpßßpöoijmklöööpoiklk \n ')));
alert(unescape(escape(document.f.inputarea.value)));
Ich habe in einem Dokument eine Textarea und lasse auf onClick die beiden Zeilen ausführen, wobei in der Textarea der gleiche String steht.
Dennoch bekomme ich zwei verschiedenen Ergebnisse.
Wie wärs, wenn Du uns die Ergebnisse auch noch zeigst?
(Tipp: laß sie statt als alert in eine Textarea ausgeben, dann kannst Du sie kopieren)
Kann mir das jemand erklären? Ist es nicht egal von wo der String kommt?
Ich vermute, daß die Strings nicht identisch sind. Aber da Du uns das Ergebnis verschweigst, ist das nur geraten.
cu,
Andreas
Wie wärs, wenn Du uns die Ergebnisse auch noch zeigst?
(Tipp: laß sie statt als alert in eine Textarea ausgeben, dann kannst Du sie kopieren)
Im ersten Fall
ŸšŠp§§pšoijmklšššpoiklk
und im zweiten Fall die korrekte Anzeige.
Ich vermute, daß die Strings nicht identisch sind. Aber da Du uns das Ergebnis verschweigst, ist das nur geraten.
Was noch komisch ist. Ich bin gerade an einem XP -Rechner. Wenn ich jetzt die thml-Aufmache, steht da statt
üöäpßßpöoijmklöööpoiklk \n
genau das gleiche Kauderwelsch, also
ŸšŠp§§pšoijmklšššpoiklk \n
Was soll dass denn jetzt?
Pete
Hi,
Was noch komisch ist. Ich bin gerade an einem XP -Rechner. Wenn ich jetzt die thml-Aufmache, steht da statt
üöäpßßpöoijmklöööpoiklk \n
genau das gleiche Kauderwelsch, also
ŸšŠp§§pšoijmklšššpoiklk \n
Welche encoding-Angabe(n) gelten für die Seite?
cu,
Andreas
Welche encoding-Angabe(n) gelten für die Seite?
Der Kopf der HTML-Seite sieht so aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Fenstertitel</title>
<link type="text/css" href="../css/configstyle.css" rel="stylesheet">
<script type="text/javascript" src="../js/config.js"></script>
<script type="text/javascript">
var pageFunction = "";
var numOfItems = 4;
var fileType="XML";
</script>
</head>
und ist in einem Frameset mit der "frame"-Datei
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>OLELE : Der Online-eLearning-Editor</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta http-equiv="cache-control" content="no-cache">
<script type="text/javascript" src="./js/jsxml/jsxml.js"></script>
<script type="text/javascript" src="./js/olele.js"></script>
<script type="text/javascript" src="./js/element.js"></script>
<script type="text/javascript" src="./js/page.js"></script>
<script type="text/javascript" src="./js/import_export.js"></script>
<script type="text/javascript" src="./js/string_helpers.js"></script>
<!--script type="text/javascript" src="./js/modul.js"></script//-->
</head>
<frameset rows="75,*" frameborder="0" border="0" framespacing="0">
<frame src="./head_lernseite2.html" name="topframe" scrolling="no" noresize="noresize">
<frame src="./content.html" name="content" noresize="noresize">
<!--frame src="./leer.html" name="bottom" scrolling="no" noresize="noresize"//-->
<noframes>eLearning-Editor für den Schulbereich. Dieses Seite verwendet Frames. Bei Ihnen werden keine Frames angezeigt.</noframes>
</frameset>
</html
Es reciht doch eine encoding-Angabe in der Frameset-Datei, oder?
Pete
Hi,
Welche encoding-Angabe(n) gelten für die Seite?
<head>
<title>Fenstertitel</title>
<link type="text/css" href="../css/configstyle.css" rel="stylesheet">
<script type="text/javascript" src="../js/config.js"></script>
<script type="text/javascript">
</script>
</head>
Also keine encoding-Angaben. Schlecht. Solltest Du ändern.
Laß mich raten, die beiden Browser mit den verschiedenen Ergebnissen haben unterschiedliche Default-Werte für das Encoding.
Es reciht doch eine encoding-Angabe in der Frameset-Datei, oder?
Nö. Eine encoding-Angabe in der Frameset-Datei gilt einzig und allein für diese Frameset-Datei.
cu,
Andreas
Also keine encoding-Angaben. Schlecht. Solltest Du ändern.
Welche Encoding-Angaben wären denn so geschickt? Die ISO-????-1? Oder die UTF-8
Laß mich raten, die beiden Browser mit den verschiedenen Ergebnissen haben unterschiedliche Default-Werte für das Encoding.
Das kann natürlich sein. Leider stehen die Computer an verschiedenen Stellen, daher kann ich es nicht im Moment nachprüfen.
Nö. Eine encoding-Angabe in der Frameset-Datei gilt einzig und allein für diese Frameset-Datei.
Und wieder was dazugelernt.
DAnke Pete
Hi,
Also keine encoding-Angaben. Schlecht. Solltest Du ändern.
Welche Encoding-Angaben wären denn so geschickt? Die ISO-????-1? Oder die UTF-8
Natürlich einzig und allein die, die dem tatsächlichen Encoding des Dokumentes entspricht.
cu,
Andreas
So, ich habe jetzt alles soweit abgeändert:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>fenstername</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<link type="text/css" href="../css/configstyle.css" rel="stylesheet">
<script type="text/javascript" src="../js/config.js"></script>
<script type="text/javascript">
// ************* OLELE-Function **************************
function transferPageData(){
document.f.test.value = unescape(escape(document.f.xml_file.value)) + '\n';
document.f.test.value += unescape(escape('üöäpßßpöoijmklöööpoiklk \n '));
}
Das Ergebnis in der Textarea lautet:
üöäpßßpöoijmklöööpoiklk \n
ŸšŠp§§pšoijmklšššpoiklk
Beim Firefox habe ich ebenfalls ISO-8859-1 eingestellt.
Kann mir jetzt jemand noch helfen?
Pete
Hallo, Pete!
Kann mir jetzt jemand noch helfen?
du meinst das hier: ?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<script>
function transferPageData(){
e=document.f.a.value;
document.f.e1.value = unescape(escape(e));
document.f.e1.value += unescape(escape('üöäpßßpöoijmklöööpoiklk \n |'));
}
</script>
<form name="f">
<textarea cols="40" rows="3" name="a">
üöäpßßpöoijmklöööpoiklk
|
</textarea><br>
<textarea cols="40" rows="4" name="e1"></textarea>
<input type="button" value="go" onClick="transferPageData()">
</form>
</body>
</html>
hat bei mir wunderbar funktioniert.
freundl. Grüsse aus Berlin, Raik
hat bei mir wunderbar funktioniert.
Nein, mir überhaupt nicht.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
function transferPageData() {
e=document.f.a.value;document.f.e1.value = unescape(escape(e))+'\n';
document.f.e1.value += unescape(escape('üöäpßßpöoijmklöööpoiklk'));
}
</script>
</head>
<body>
<form name="f">
<textarea cols="40" rows="3" name="a">üöäpßßpöoijmklöööpoiklk</textarea><br>
<textarea cols="40" rows="4" name="e1"></textarea>
<input type="button" value="go" onClick="transferPageData()"></form>
</body>
</html>
Der Code sieht wie oben aus und das was ich bekomme ist:
ŸšŠp§§pšoijmklšššpoiklk
ŸšŠp§§pšoijmklšššpoiklk
Immerhin schon mal das gleiche.
Aber ich würde gerne die Umlaute sehen.
Pete
Hi,
Der Code sieht wie oben aus und das was ich bekomme ist:
ŸšŠp§§pšoijmklšššpoiklk
ŸšŠp§§pšoijmklšššpoiklk
Laß doch auch mal die Ergebnisse des Zwischenschritts (also die URLencodierten Strings) sehen.
cu,
Andreas
» Laß doch auch mal die Ergebnisse des Zwischenschritts (also die URLencodierten Strings) sehen.
Ohne Alles:
ŸšŠp§§pšoijmklšššpoiklk
ŸšŠp§§pšoijmklšššpoiklk
Nur escape():
%u0178%u0161%u0160p%A7%A7p%u0161oijmkl%u0161%u0161%u0161poiklk
%u0178%u0161%u0160p%A7%A7p%u0161oijmkl%u0161%u0161%u0161poiklk
Mit unescape(escape(e)):
ŸšŠp§§pšoijmklšššpoiklk
ŸšŠp§§pšoijmklšššpoiklk
Zur gehörige Quelltext:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
function transferPageData() {
e=document.f.a.value;
document.f.e1.value = "Ohne Alles:\n";
document.f.e1.value += e+'\n';
document.f.e1.value += 'üöäpßßpöoijmklöööpoiklk'+'\n\n';
document.f.e1.value += "Nur escape():\n";
document.f.e1.value += escape(e)+'\n';
document.f.e1.value += escape('üöäpßßpöoijmklöööpoiklk')+'\n\n';
document.f.e1.value += "Mit unescape(escape(e)):\n";
document.f.e1.value += unescape(escape(e))+'\n';
document.f.e1.value += unescape(escape('üöäpßßpöoijmklöööpoiklk'))+'\n\n';
}
</script>
</head>
<body>
<form name="f">
<textarea cols="40" rows="3" name="a">üöäpßßpöoijmklöööpoiklk</textarea><br>
<textarea cols="40" rows="10" name="e1"></textarea>
<input type="button" value="go" onClick="transferPageData()"></form>
</body>
</html>
Hi,
Nur escape():
%u0178%u0161%u0160p%A7%A7p%u0161oijmkl%u0161%u0161%u0161poiklk
%u0178%u0161%u0160p%A7%A7p%u0161oijmkl%u0161%u0161%u0161poiklk
Mit unescape(escape(e)):
ŸšŠp§§pšoijmklšššpoiklk
ŸšŠp§§pšoijmklšššpoiklk
Das unescape tut also, was es soll.
Beim escape scheint irgendein seltsames encoding vorausgesetzt zu werden ...
cu,
Andreas
Das unescape tut also, was es soll.
Beim escape scheint irgendein seltsames encoding vorausgesetzt zu werden ...
Deswegen habe ich jetz einfach alle Encodings beim Firefox durchprobiert. Der einzige der geht ist Western(Mac Roman). Weiß der Himmel warum.
Pete
Hallo Pete
Ohne Alles:
ŸšŠp§§pšoijmklšššpoiklk
ŸšŠp§§pšoijmklšššpoiklk
Beides identisch, sowohl aus der ersten Textarea ausgelesen,
als auch direkt aus dem Javascript.
Also muss der Fehler bereits hier auftreten.
Ich kann bei mir keinen Fehler nachvollziehen.
Vieleicht liefern folgende Fragen einen Anhaltspunkt.
Auf Wiederlesen
Detlef
- Was zeigt die erste Textarea an?
ŸšŠp§§pšoijmklšššpoiklk
- Welcher/welche Browser?
FireFox 1.0
- Welches OS?
OSX 10.3.5
- Welche Browsereinstellung zum Zeichensatz?
Bislang ISO-8859-1
- Lokal oder vom Server?
Lokal ohne Server
- Welche Angabe zur Zeichenkodierung gibt liefert dieser aus?
Kein Server - keine Zeichenkodierung. Selbst wenn, wie finde ich das raus?
Pete
Hallo Pete
- Was zeigt die erste Textarea an?
ŸšŠp§§pšoijmklšššpoiklk
Wird sonstiger Text auf der Seite richtig kodiert?
Eventuell eine abweichende Kodierung zwischen Editor und Browser?
- Welcher/welche Browser?
FireFox 1.0
- Welches OS?
OSX 10.3.5
Firefox unter OSX, dazu kann ich leider nichts sagen.
Kein Server - keine Zeichenkodierung. Selbst wenn, wie finde ich das raus?
Also die Zeichenkodierung die in der Seite angegeben ist.
Wird diese vom verwendeten Editor unterstützt?
Was passiert, wenn du den Text im Browser in die erste Textarea eingibst,
statt diese im Quelltext zu füllen?
Auf Wiederlesen
Detlef
Also die Zeichenkodierung die in der Seite angegeben ist.
Wird diese vom verwendeten Editor unterstützt?
Was passiert, wenn du den Text im Browser in die erste Textarea eingibst,
statt diese im Quelltext zu füllen?
ich habe jetzt rausgefunden, dass bei Auswahl von "Wesern(MacRoman)"-Encoding alles geht.
Allerdigns finde ich es dennoch merkwürdig, dass er den meta-Tag der Seite ignoriert. Wofür gibt es den denn dann?
Pete
Hallo,
Also die Zeichenkodierung die in der Seite angegeben ist.
Wird diese vom verwendeten Editor unterstützt?
^^^^^^
Was passiert, wenn du den Text im Browser in die erste Textarea eingibst,
statt diese im Quelltext zu füllen?
Was passiert dann bei ISO-8859-1?
ich habe jetzt rausgefunden, dass bei Auswahl von "Wesern(MacRoman)"-Encoding alles geht.
Wie sieht es dann in meinem Browser bei ISO-8859-1 aus?
OK, vielleicht kein Problem, mein Browser kann auch Western(MacRoman),
aber wird der Server das dann auch mit dieser Angabe ausliefern?
Vielleicht verwendet dein Editor standardmäßig Western(MacRoman)?
Allerdigns finde ich es dennoch merkwürdig, dass er den meta-Tag der Seite ignoriert. Wofür gibt es den denn dann?
Ich denke eher, er ignoriert ihn nicht.
Auf Wiederlesen
Detlef
Hallo, Pete!
hat bei mir wunderbar funktioniert.
Nein, mir überhaupt nicht.
dann muss an deinem browser was kaputt sein. ich hab deinen code kopiert und hier ausgeführt und es funktioniert.
probiers doch noch mal mit UTF-8.
freundl. Grüsse aus Berlin, Raik