Hallo,
was hat escape() nun mit UTF-8 zu tun? Es wandelt doch nur Steuer- und Sonderzeichen in ihre URL-codierte Form um, also z.B. \r in %0D. Ob der String bzw. das ganze Dokument dabei in UTF-8, ISO-8859-x oder gar Plain ASCII codiert ist, spielt nicht die geringste Rolle.
Äh... Strings in JavaScript sind erstmal nicht »kodiert«, weil JavaScript Strings nie als Byte-Sequenzen o.ä. sieht, sondern immer nur als Unicode-Zeichen (die intern üblicherweise als UTF-16 gespeichert werden, was einen aber nicht zu interessieren braucht). Bei URL-Kodierung müssen alle Unicode-Zeichen auf US-ASCII abgebildet werden, d.h. escape("ö") ergibt %F6. Dieses 0xF6 ist nichts anderes als die Ein-Byte-Kodierung von ISO-8859-1. In UTF-8 würde dieses Zeichen aber mit zwei Byte kodiert.
Nö, encodeURI() macht ja genau dasselbe - nur dass hier noch einige Zeichen mehr umcodiert werden, die in URLs auch nichts verloren haben.
encodeURI nutzt vor allem UTF-8 statt ISO-8859-1.
Mathias