bert: Umlaute

Hi,

ich hab da mal ne Frage bezüglich Barrierefreiheit und Umlauten.
Meine Seite leitet alle URL-Anfragen automatisch um auf die index.php und gibt die URI dann mittels ?path=\1 weiter. Wenn nun die URL www.host.de/de/münchen aufgerufen wird funktioniert das bei mir mit den Umlauten einwandfrei.

Wo und wann kann es denn damit Probleme geben? Also wenn die Seite deutschsprachig ist und somit wohl auch ausschließlich deutschsprachige Personen drauf zugreifen.

Meine jetzt falls die URL irgendwo gepostet wird und diese Seite keine Umlaute unterstützt. Gibt es dann einen Weg, dass Problem mit den Umlauten zu umgehen, aber dennoch auch Umlaute zuzulassen?
Wenn ich die RewriteEngine so nutze, dass ae ue und oe automatisch intern als ä ö und ü behandelt werden gibt es Probleme, sobald ein Wort wirklich mit ae geschrieben wird..

Vorschläge?

Danke und Gruß

  1. Maskieren? -> www.example.org/de/m%FCnchen

    1. wenn ich alles auf utf8 stehen habe und Umlaute korrekt funktionieren, kann es dann sein, dass jemand aus einem Land ohne deutsche Umlaute einem Link wie www.example.org/de/münchen nicht folgen kann, wenn er innerhalb meiner Seite darauf zugreift, oder ist das nur serverabhängig?

      1. wenn ich alles auf utf8 stehen habe und Umlaute korrekt funktionieren,

        Variables charset ist ein Konzept, das auf den Request-body oder den Responsebody anwendbar ist. Nicht in Headern. Deine url wird aber im header transportiert und dort gilt ASCII--

        kann es dann sein, dass jemand aus einem Land ohne deutsche Umlaute einem Link wie www.example.org/de/münchen nicht folgen kann, wenn er innerhalb meiner Seite darauf zugreift, oder ist das nur serverabhängig?

        Software kann deine url verwerfen, weil sie nicht konform ist.
        User können die Url nicht eingeben, weil ein ü nicht greifbar ist.
        Deine url kann falsch angezeigt werden, weil die bytes im falschen charset Kontext präsentiert werden.

        Ein ü im Pfad oder Querystring ist nicht Teil der http://www.ietf.org/rfc/rfc1738.txt

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. @@Beat:

          nuqneH

          Ein ü im Pfad oder Querystring ist nicht Teil der http://www.ietf.org/rfc/rfc1738.txt

          1738? Aus welcher Gruft haste denn den ausgegraben? Dem riecht man ja sein Alter an. Aber sowas von.

          “Updated by: 1808, 2368, 2396, 3986

          Qapla'

          --
          Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      2. Hi,

        wenn ich alles auf utf8 stehen habe und Umlaute korrekt funktionieren, kann es dann sein, dass jemand aus einem Land ohne deutsche Umlaute einem Link wie www.example.org/de/münchen nicht folgen kann, wenn er innerhalb meiner Seite darauf zugreift, oder ist das nur serverabhängig?

        Kodiere, wie von Markus schon empfohlen, die Sonderzeichen entsprechend - dann braucht überhaupt niemand dem Link auf www.example.org/de/münchen zu folgen.
        Es gibt überhaupt keinen vernünftigen Grund, auf diese Kodierung bei Angabe der Adresse im HTML-Kontext zu verzichten.

        Moderne Browser zeigen, wenn sie entsprechende Zeichen darstellen können, dann wieder die dekodierte Version in der Adresszeile an (die Betonung liegt auf Anzeigen!). Wenn nicht, bleibt's halt bei %XY (oder %AB%CD bei Verwendung von UTF-8) in der Darstellung.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        1. Moderne Browser zeigen, wenn sie entsprechende Zeichen darstellen können, dann wieder die dekodierte Version in der Adresszeile an (die Betonung liegt auf Anzeigen!). Wenn nicht, bleibt's halt bei %XY (oder %AB%CD bei Verwendung von UTF-8) in der Darstellung.

          Also ich habe jetzt die Funktion urlencode() benutzt. Dadurch wird aus Händler --> H%C3%A4ndler. Wie gewünscht.

          Aber der interne Gebrauch von Umlauten ist doch in Ordnung, wenn der Server das unterstützt, oder? Wenn meine URL mit %c3%a4 statt ä aufgerufen wird, ich dann aber Umlaute in der DB gespeichert habe und diese auch als solche ausgebe. Die werden dann auch immer als Umlaute und nicht als merkwürdige Zeichen ausgegeben, oder ist das Client-abhängig??

          Wenn ich die ASCII URL in ner Variable speichere und diese ausgebe, werden automatisch wieder Umlaute angezeigt (ist das immer so? Musste garnicht urldecode() benutzen..)

          Mein Ziel ist, dass eben nicht nur international gültige URLs benutzt werden, sondern auch Leute, die per Hand Umlaute in der URL eingeben auf die selbe Seite gelangen.

          Außerdem: FF zeigt (trotz ASCII URL im Quellcode) die URL mit Umlauten an (IE nicht). Also wenn dann die URL kopiert wird habe ich das selbe Problem wie vorher. Kann ich FF zwingen, die %ab%cd Angabe anzuzeigen?

          Vielen Dank für eure Hilfe!

          1. Außerdem: FF zeigt (trotz ASCII URL im Quellcode) die URL mit Umlauten an (IE nicht). Also wenn dann die URL kopiert wird habe ich das selbe Problem wie vorher. Kann ich FF zwingen, die %ab%cd Angabe anzuzeigen?

            geh mal in about:config
            filtere auf url. und spiele mit deinem Browser.
            Aber vergiss nicht, den Default wieder herzustellen.

            mfg Beat

            --
            ><o(((°>           ><o(((°>
               <°)))o><                     ><o(((°>o
            Der Valigator leibt diese Fische
            1. geh mal in about:config
              filtere auf url. und spiele mit deinem Browser.
              Aber vergiss nicht, den Default wieder herzustellen.

              In meinem Browser? Das bringt mir doch nichts, damit die URL bei anderen richtig angezeigt wird, sondern nur bei mir... Oder ich verstehe dich falsch.?

              1. In meinem Browser? Das bringt mir doch nichts, damit die URL bei anderen richtig angezeigt wird, sondern nur bei mir... Oder ich verstehe dich falsch.?

                Siehst du - das ist das Problem an der Sache.

          2. Hi,

            Aber der interne Gebrauch von Umlauten ist doch in Ordnung, wenn der Server das unterstützt, oder? Wenn meine URL mit %c3%a4 statt ä aufgerufen wird, ich dann aber Umlaute in der DB gespeichert habe und diese auch als solche ausgebe. Die werden dann auch immer als Umlaute und nicht als merkwürdige Zeichen ausgegeben, oder ist das Client-abhängig??

            Wenn du an allen relevanten Stellen angibst, welche Kodierung verwendet wird - dann hat der Client da keinen Entscheidungsspeilraum mehr.

            Wenn ich die ASCII URL in ner Variable speichere und diese ausgebe, werden automatisch wieder Umlaute angezeigt (ist das immer so? Musste garnicht urldecode() benutzen..)

            Dass zwischen dem, was im HTML steht, und dem, was irgendwo angezeigt wird (Statuszeile, Adresszeile), zu differenzieren ist, schrieb ich bereits.

            Außerdem: FF zeigt (trotz ASCII URL im Quellcode) die URL mit Umlauten an (IE nicht).

            Dass zwischen ... schrieb ich bereits. (S.o.)

            Also wenn dann die URL kopiert wird habe ich das selbe Problem wie vorher. Kann ich FF zwingen, die %ab%cd Angabe anzuzeigen?

            Welches Problem hast du dann?
            Mein Firefox hat damit keins.
            Wenn ich ein ä in der Adresszeile eintippe, dann sendet er ein URL-gerecht kodiertes UTF-8 ä an den Server.

            Mein Ziel ist, dass eben nicht nur international gültige URLs benutzt werden, sondern auch Leute, die per Hand Umlaute in der URL eingeben auf die selbe Seite gelangen.

            Ob das klappt, hängt davon ab, wie die Leute in ihrem Browser eingestellt haben, dass URLs kodiert werden sollen.
            In aktuellen Opera- und IE-Versionen ist m.W. UTF-8 der Default; im aktuellen Firefox finde ich das wie folgt differenziert,
            network.standard-url.encode-query-utf8 - false
            network.standard-url.encode-utf8       - true
            Warum man sich hier für diese Defaultwerte entschieden hat - URLs zwar erst mal generell als in UTF-8 vorliegend zu betrachten, im Querystring auftauchende Sonderzeichen jedoch nicht, erschliesst sich mir allerdings nicht, im Gegenteil, es erscheint mir ziemlich inkonsequent.
            Da du aber mittels mod_rewrite „schöne” URLs umschreibst, also höchstvermutlich noch gar kein Path vorhanden ist, in dem irgendwelche Sonderzeichen eine Rolle spielen könnten, sehe ich das hier auch als eher unproblematisch an.

            Wenn du aber wirklich auf Nummer sicher gehen wolltest - dann müsstest du auf alle Sonderzeichen, die ausserhalb von ASCII liegen, verzichten.

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
            1. Hi,

              Ob das klappt, hängt davon ab, wie die Leute in ihrem Browser eingestellt haben, dass URLs kodiert werden sollen.
              In aktuellen Opera- und IE-Versionen ist m.W. UTF-8 der Default; im aktuellen Firefox finde ich das wie folgt differenziert,
              network.standard-url.encode-query-utf8 - false
              network.standard-url.encode-utf8       - true

              Wobei ich gerade beim IE 8 feststelle, dass der sich so verhält, wie es die Einstellungen vom FF beschreiben - im Path wird ein ä korrekt in UTF-8 kodiert, wie ich das in den Internet Optionen angegeben habe. Steht das ä jedoch im Querystring, dann sendet es der IE in irgendeiner andere Kodierung - und dummerweise hat er bietet er eine separate Option, die Kodierung auch für den Querystring explizit auf UTF-8 zu setzen, nicht an.

              MfG ChrisB

              --
              “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]