lois: PERL/JAVASCRIPT: escape string zurückkonvertieren.

hallo,

ich rufe mit einem java-script ein pl script auf:

document.write('<a href="test.cgi?ref=');
document.write( escape(document.referer) );
document.write('">test</a>');

was das script jetzt bekommt ist z.b

http://www.google.at/search?q=b%C3%BCchse gro%C3%9Fvenediger OR %C3%B6 OR %C3%A4&btnG=Google-Suche&meta=

also %C3%BC für ü
also %C3%B6 für ö
also %C3%A4 für ä

wenn ich hier die standardmethode zum unescape mache

$une =~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;

was hier so einen schönen satz ergiebt:

büchse groÃvenediger OR ö OR ä

hat da jemand einen rat, warum das java 2escape-codes hat und wie man dann das mit perl macht?

thx + lg, lois.

  1. Hi,

    büchse groÃvenediger OR ö OR ä

    also UTF-8

    hat da jemand einen rat, warum das java 2escape-codes hat und wie man dann das mit perl macht?

    Welches Java? Meinst Du das Javascript?

    Welches encoding hat die Seite?

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Hi,

      also UTF-8

      ja.

      Welches Java? Meinst Du das Javascript?

      ja.

      Welches encoding hat die Seite?

      UTF-8
      charset ist das iso-8859-1, also mit äüöß
      habs mit
      $unenc = CGI::unencode($ref) probiert, hat aber nicht funktioniert.

      irgendsowas mit s/%[0-9A-Fa-f][0-9A-Fa-f]%[0-9A-Fa-f][0-9A-Fa-f]//eg;

      aber es gibt ja auch unicode-zeichen, die nur ein byte haben oder sogar drei. :(

      lg, lois

  2. hallo,

    also %C3%BC für ü
    also %C3%B6 für ö
    also %C3%A4 für ä

    mein ploblem ist kurz gesagt, wie mach ich in perl aus einem utf-8 einen utf-32, weil den kann ich ja dann in der html verwenden z.B %C3%B6(utf-8) -> %0xXXXX(utf-16/32) -> m&#yyyy;rchenhaft

    %C3%B6 -> ö ist mir zu wenig, es soll auch bei jemandem in griechenland etc. die richtige ausgabe haben.

    lg, lois.