Eternius: Zeichencode Wirrwarr Perl

Hallo,

ich hab folgendes Problem:

ich weiss nicht genau, ob was was mit dem zeichensatz zu tun hat aber ich schätze mal schon, ISO-8859-1 ist es aufm server und auch im browser.

ich prüfe die uri auf bestimmte Zeichen mit dem regexp=~/[^a-zA-Z_äöüÄÖÜ0-9ß]/
das heisst eigentlich müsste er alles akzeptieren.
Funktioniert auch mit firefox/mozzi.
Leider macht der IE Probleme, indem er mir in der uri folgenden string gibt, der zeichen enthält, die dem regexp nicht entsprechen:

Falscher Syntax. test mit umläuten
                             ^^
im server log steht als request:

test%20mit%20uml\xe4uten
                ^^^^

woran, und wie kann das liegen?
http://oppo.ath.cx/0h/test mit umläuten/

danke && gruss

--
no strict;
no warnings;
man google
  1. Hallo,

    ich prüfe die uri auf bestimmte Zeichen mit dem regexp=~/[^a-zA-Z_äöüÄÖÜ0-9ß]/
    das heisst eigentlich müsste er alles akzeptieren.

    Ein URI _kann_ keine Zeichen außerhalb von US-ASCII uncodiert enthalten, auch nicht im path. http://www.faqs.org/rfcs/rfc3986.html
    Auch bei Umlaut-Domänen ist der _Client_ zuständig für die Umsetzung. Bsp.: http://www.müller.de wird vom _Client_ umgesetzt in http://www.xn--mller-kva.de.
    Es ist also schlecht, mit Umlauten in Pfadangaben zu arbeiten. Das gilt übrigens nicht nur wegen dem URI. Auch im Dateisystem bringt das eigentlich nur Stress. Warum sollte man so etwas also wollen?

    Es gibt eine neue Form der URI, die IRI http://www.faqs.org/rfcs/rfc3987.html

    Leider macht der IE Probleme, indem er mir in der uri folgenden string gibt, der zeichen enthält, die dem regexp nicht entsprechen:
    Falscher Syntax. test mit umläuten

    ^Unicode

    Für IRIs wird, laut RFC, UTF-8 als Codierung empfohlen. Somit hätte der IE hier ausnahmsweise mal Recht.

    Aber, wie gefragt: Was willst Du erreichen?

    viele Grüße

    Axel

    1. Hallo,

      danke für die antworten,

      Es ist also schlecht, mit Umlauten in Pfadangaben zu arbeiten. Das gilt übrigens nicht nur wegen dem URI. Auch im Dateisystem bringt das eigentlich nur Stress. Warum sollte man so etwas also wollen?

      weil es kein dateisystem ist, sondern db. :(

      Es gibt eine neue Form der URI, die IRI http://www.faqs.org/rfcs/rfc3987.html

      Aber, wie gefragt: Was willst Du erreichen?

      erreichen?
      naja eigentlich nur schöne suchergebnisse, das ganze läuft per mod_rewrite
      und setzt einfach nur /bla blub in /cgi-bin/skript?target=bla blub um.
      und wegen sql injection will ich auch nicht alle zeichen zulassen.

      danke && gruss

      --
      no strict;
      no warnings;
      man google
      1. So,

        ich habs geworkarounded mit:
        Unicode::UTF8simple
        konvertiere ich den Namen aber nur, wenn ua ein IE ist.
        bäh :)

        gruss

        --
        no strict;
        no warnings;
        man google
        1. Hallo,

          ich habs geworkarounded mit:
          Unicode::UTF8simple
          konvertiere ich den Namen aber nur, wenn ua ein IE ist.
          bäh :)

          Besser wäre
          ... konvertiere ich den Namen aber nur, wenn er in Unicode UTF-8 ist.

          viele Grüße

          Axel

    2. Hallo,

      Es gibt eine neue Form der URI, die IRI http://www.faqs.org/rfcs/rfc3987.html
      Für IRIs wird, laut RFC, UTF-8 als Codierung empfohlen. Somit hätte der IE hier ausnahmsweise mal Recht.

      Ähm. Wenn ich das richtig verstanden habe, muss ich mich hier korrigieren.
      Aus RFC3987:
         a.  A protocol or format element should be explicitly designated to
             be able to carry IRIs.  The intent is not to introduce IRIs into
             contexts that are not defined to accept them.  For example, XML
             schema [XMLSchema] has an explicit type "anyURI" that includes
             IRIs and IRI references. Therefore, IRIs and IRI references can
             be in attributes and elements of type "anyURI".  On the other
             hand, in the HTTP protocol [RFC2616], the Request URI is defined
             as a URI, which means that direct use of IRIs is not allowed in
             HTTP requests.

      Natürlich hat im Kontext HTTP der Mozilla Recht, wenn er bei "umläuten" im URI-Path in "uml%E4uten" encodiert.

      viele Grüße

      Axel