Calocybe: unescape() liefert unbrauchbare Ergebnisse für Zeichen > %7e

Beitrag lesen

Moin!

Das Ergebnis hängt übrigens vom eingestellten Zeichensatz ab, und entspricht weder im NN4 noch im Mozilla den Erwartungen einer leeren Ausgabe.

Ich hab das Script mal leicht veraendert, sodass jede Zeile ausgegeben wird:
  document.write(s + " " + i + (i==n ? " == " : " != ") + n + " " + e + " <br>");
(ohne if) und mit den Zeichensaetzen rumgespielt. Auf den ersten Blick sieht es so aus, wie wenn der Zeichensatz der URL als der angenommen wird, der in der Meta-Angabe im Header steht, charCodeAt() aber immer die Zeichenposition im Unicode zurueckliefert. Allerdings liefern Netscape 4.7 und Mozilla 0.9.8 unterschiedliche Ergebnisse (mit iso-8859-2), sodass ich mir das heute abend mal noch genauer anschauen muss (insbesondere mit den Zeichentabellen vergleichen).

Interessant ist vor allem was passiert, wenn ich UTF-8 als charset-Angabe habe. Netscape4 liefert dann fuer %80-%FF durchweg 65533 als Charcode, was offenbar fuer "gibt's nich" steht, wie ich aus anderen Versuchen schliesse. Mozilla gibt nur bis %7F aus und bricht dann ab. Im JS-Log steht die vielsagende Zeile
Error: uncaught exception: [Exception... "Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDOMWindowInternal.unescape]"  nsresult: "0x8000ffff (NS_ERROR_UNEXPECTED)"  location: "JS frame :: file:///T:/home/calocybe/files/tests/js/unescape-bug/uebug0.html :: <TOP_LEVEL> :: line 11"  data: no]

Soviel dazu.

So long