Umlaute in der URL
Andreas
- programmiertechnik
Hallo!
Ist es möglich Umlaute in der URL zu verwenden? Ich würde z.B, gerne "übersicht.php" in die Adresszeile des Browsers schreiben, gibt es eine Möglichkeit das das funktioniert? Wo liegt genau das Problem? Bei der Übertragung? Kann man nicht "vorhersehen" was ein Browser aus dem "ü" in der URL macht und das danach wieder entschlüsseln? Mann kann ja dann meinetwegen per Rewrite Rule auf "uebersicht.php" umschreiben!
Hat jemand ne Idee?
Grüße
Andreas
Ist es möglich Umlaute in der URL zu verwenden? Ich würde z.B, gerne
Abschnitt 2.2, "URL Character Encoding Issues", von RFC 1738, "Uniform Resource Locators" (http://www.w3.org/Addressing/rfc1738.txt), dürfte Dich interessieren. Eventuell auch <?m=125838&t=22658> hier im Forum, wo ein ähnliches Thema behandelt wird.
Gruß,
soenk.e
Hallo!
Abschnitt 2.2, "URL Character Encoding Issues", von RFC 1738, "Uniform Resource Locators" (http://www.w3.org/Addressing/rfc1738.txt), dürfte Dich interessieren. Eventuell auch <?m=125838&t=22658> hier im Forum, wo ein ähnliches Thema behandelt wird.
Das ist mir alles durchaus bewußt! Aber ich habe doch ein anderes Problem: ich möchte keinen Link erstellen, den ich entsprechend mit urlencode() bearbeiten könnte, sondern ich will manuell in die Adressleiste meines Browsers ein "ü" eimgeben können. Wie gesagt, ich gebe ein:
www.sever.tld/übersicht.php
Das steht wie gesagt _nicht_ als Link auf einer Seite sondern soll manuell in den Browser eingegeben werden könnnen.
Oder übersetzt der Browser das inzwischen von alleine? Ich weiß halt nicht was der Browser aus dem ü macht, wenn er das ganze an den Server schickt! Mein Mozilla macht da ganz brav ein "%FC" aus dem Ü, das könnte ich ja serverseitig umschreiben auf ein ue und schon habe ich das was ich will. Die Frage ist nur, wie reagieren die anderen Browser?
Grüße
Andreas
Hallo!
Aber das umleiten klappt auch nicht, habe das wie folgt probiert:
RewriteEngine On
RewriteRule ^%(F|D)C(.*) /ue$2 [L]
es existiert eine Datei uebersicht.php
jetzt sollen sowohl
%DCbersicht.php also "Übersicht.php"
als auch
%FCbersicht.php also "übersicht.php"
auf uebersicht.php umgeleitet werden. Warum geht das nicht so? Bekomme einen 404er Fehler!
Hast Du eine Idee woran es scheitert?
Grüße
Andreas
Ich habe auch % mal auskommentiert, bringt auch nichts!
Hallo nochmal!
ich wollte doch nur mal eben anmerken, der IE5 überträgt das "ü" anscheinend direkt - so wie es ist?!
http://www.schroepl.net/cgi-bin/http_trace.pl?übersicht
wenn man sich das im Mozilla anguckt, sieht man das dieser das "ü" von sich aus codiert, der IE nicht. Wie ist das bei anderen Browsern?
Wie sicher ist das ganze? Können dabei Fehler auftreten?
Hat jemand ne Idee was an meiner Rewrite Rule falsch ist?:
RewriteEngine On
RewriteRule ^%(F|D)C(.*) /ue$2 [L]
es existiert eine Datei uebersicht.php
jetzt sollen sowohl
%DCbersicht.php also "Übersicht.php"
als auch
%FCbersicht.php also "übersicht.php"
auf uebersicht.php umgeleitet werden. Warum geht das nicht so? Bekomme einen 404er Fehler!
Hast Du eine Idee woran es scheitert?
Grüße
Andreas
Ich habe auch % mal auskommentiert, bringt auch nichts!
Viele Grüße
Andreas
ich wollte doch nur mal eben anmerken, der IE5 überträgt das "ü" anscheinend direkt - so wie es ist?!
http://www.schroepl.net/cgi-bin/http_trace.pl?übersicht
Das ist natürlich a) ein Bug, da die an den Server gesendete URI syntaktisch ungültig ist und b) inkonsequent, die Inkonsequenz findet sich allerdings nur im Abfrageteil einer URI. Der IE6 verhält sich ebenfalls so.
Hat jemand ne Idee was an meiner Rewrite Rule falsch ist?:
Lass dir von mod_rewrite ein RewriteLog anlegen und analysiere das selber.
ich wollte doch nur mal eben anmerken, der IE5 überträgt das "ü" anscheinend direkt - so wie es ist?!
http://www.schroepl.net/cgi-bin/http_trace.pl?übersicht
Das ist natürlich a) ein Bug, da die an den Server gesendete URI syntaktisch ungültig ist und b) inkonsequent, die Inkonsequenz findet sich allerdings nur im Abfrageteil einer URI. Der IE6 verhält sich ebenfalls so.
Warum ist das inkonsequent? Ich gebe was ein und der Browser macht genau das, was ist da inkonsequent?
Hat jemand ne Idee was an meiner Rewrite Rule falsch ist?:
Lass dir von mod_rewrite ein RewriteLog anlegen und analysiere das selber.
wie das?
Kann es was damti zu tun haben das rewrite unter Subdomains nicht richtig funktioniert?
Andreas
Warum ist das inkonsequent?
Wie ich vorher schon schrieb, kodiert er Umlaute an anderen Stellen der URI meinen Vorstellungen entsprechend.
Lass dir von mod_rewrite ein RewriteLog anlegen und analysiere das selber.
»»
wie das?
Hm, das steht im Handbuch, was hast du daran denn nicht verstanden? Ich würde im übrigen raten, für deine mod_rewrite Probleme ggf. einen neuen Thread zu eröffnen.
Kann es was damti zu tun haben das rewrite unter Subdomains nicht richtig funktioniert?
Seit wann das denn?
Oder übersetzt der Browser das inzwischen von alleine? Ich weiß halt nicht was der Browser aus dem ü macht, wenn er das ganze an den Server schickt! Mein Mozilla macht da ganz brav ein "%FC" aus dem Ü, das könnte ich ja serverseitig umschreiben auf ein ue und schon habe ich das was ich will. Die Frage ist nur, wie reagieren die anderen Browser?
Das Verhalten ist keineswegs brav, Opera 5 sendet ein ISO-8859-1 kodiertes "ü", Opera 6 sendet %C3%BC für das "ü", der IE 6 lässt sich konfigurieren, dass er ebenfalls %C3%BC sendet, ich weiss nicht, was passiert, wenn man das abstellt, Amaya 6 sendet ebenfalls %c3%bc (allerdings in Kleinschreibung). Auf einem Mac verhalten sich die Browser vielleicht wieder anders, wenn sie MacRoman als Kodierung verwenden, etc., Mozilla verhält sich m.E.n. katastrophal falsch, wenngleich korrektes Verhalten nicht fest vorgeschrieben ist.
Ist es möglich Umlaute in der URL zu verwenden?
Nein, die sind nicht zulässig, du musst entweder IRIs einsetzen oder die Umlaute kodieren, letzteres am besten wie für die IRI => URI Transformation vorgeschrieben. Im wesentlichen heisst das, die Zeichensequenz nach Unicode Normalization Format C (NFC) zu normalisieren, als UTF-8 Sequenz abzubilden und dann die entsprechende URI-Kodierung anzuwenden. Das sähe dann z.B. so aus:
http://www.hoehrmann.de/~bj%C3%B6rn/
Der Empfänger muss das dann natürlich unterstützen, sprich, ein Webserver muss annehmen, dass die URI UTF-8 kodierte Zeichen enthalten soll, dementsprechend dekodieren und dann auf das lokale Dateisystem abbilden. Das machen nicht alle...
Man könnte auch andere Zeichenkodierungen verwenden, davon ist aber dringend abzuraten.
Ich würde z.B, gerne "übersicht.php" in die Adresszeile des Browsers schreiben, gibt es eine Möglichkeit das das funktioniert?
Nein, es ist nicht verbindlich vorgeschrieben, wie die Daten an den Server gesendet werden, unterschiedliche Browser schicken in unterschiedlichen Versionen auf unterschiedlichen Plattformen je nach Konfiguration unterschiedliche Daten. Der Trend geht zwar dahin, das wie oben beschrieben (UTF-8) zu implementieren, aber darauf kann man sich nicht verlassen.
Hintergrundinformationen bekommt man z.B. hier:
http://www.w3.org/TR/charmod/
http://www.ietf.org/internet-drafts/draft-duerst-iri-01.txt
http://www.w3.org/International/O-URL-and-ident.html
Wo liegt genau das Problem? Bei der Übertragung? Kann man nicht "vorhersehen" was ein Browser aus dem "ü" in der URL macht und das danach wieder entschlüsseln? Mann kann ja dann meinetwegen per Rewrite Rule auf "uebersicht.php" umschreiben!
Du weisst schlicht nicht, was der Browser zu dir schickt, daher kannst du da auch nichts umschreiben.
Hi!
Du weisst schlicht nicht, was der Browser zu dir schickt, daher kannst du da auch nichts umschreiben.
naja, ich weiß was IE > 5 und Mozilla > 1 mir schicken, damit hätte ich schonmal 90% abgedeckt, die anderen Browser habe ich noch nicht probiert. Opera wird es denke ich auch irgebdwie so machen, und wenn NN4.x das auch irgendwie definiert macht, dann habe ich fast alle. Für die restlichen könnte ich dann ein Fallback bauen, aber da es eh um Eingabe von anwendern geht, und ich weiß das die Anwender ALLE IE verwenden, kann ich das sogar _SEHR_ genau sagen!
Zur Zeit habe ich noch Probleme mit der Rewrite Rule, aber das liegt - wie ich gerade gemerkt habe, daran, das ich das ganze unter einer Subdomain mache, wobei das eigentlich kein Problem sein sollte, muß mal gucken!
Ich weiß das es so nicht vorgesehen ist udn auch falsch ist, aber wenn es sogar Mozilla macht, dann kann ich mich wohl drauf verlasen das es auch noch in Zukunft funkitonieren wird!
Grüße
Andreas
PS: gebe mal folgendes in die Adresszeile irgendeines Browsers ein:
http://www.schroepl.net/cgi-bin/http_trace.pl?user=björn
Und sag mir wenn er undefinierten Quatsch zum Server schickt ;-)
Hi Andreas,
aber wenn es sogar Mozilla macht, dann kann ich mich wohl drauf verlasen
das es auch noch in Zukunft funkitonieren wird!
aber nicht, daß es schon immer so funktioniert hat. Und das ist ein Problem.
Viele Grüße
Michael
Hi Michael!
kennst Du http://www.glück.cc/?
Geht aber nur im IE. OK, in einer Domain ist das tatsächlich scwachsinning, aber was speicht dagegen mit Hilfe eine reagulären Ausdruckes die verschiedenen Codierungen umzuschreiben?
Wieviele gibt es denn? Das ist wohl was anderss als bei User-Agent Komnbinationen!
gibt es 10? Wieviele kennt Ihr? mit 2 Varianten decke ich garantiert 80-90% ab!
Das das allgemein nicht zu empfehlen ist - da stimme ich vollkommen zu, aber ich habe ja 3 bedeutende Enschränkungen gemacht:
1. geht es nur um Eingaben "von Hand" in die Adressleiste
2. wir zu 100% IE >=5.0, höchtens von mir Mozilla verwendet
3. sollen keien Umlaute in den Dateinamen selbst vorkommen, sondern es soll auf die Dateien ohne Umlaute weitergeleitet werden. Und das mit mod_rewrite.
Es soll doch nur eine Vereinfachung für eine Intranet-Anwendung sein!
Grüße
Andreas
aber wenn es sogar Mozilla macht, dann kann ich mich wohl drauf verlasen
das es auch noch in Zukunft funkitonieren wird!
aber nicht, daß es schon immer so funktioniert hat. Und das ist ein Problem.
Viele Grüße
Michael
Hi Andreas,
was spricht dagegen mit Hilfe eine reagulären Ausdruckes die
verschiedenen Codierungen umzuschreiben?
Wieviele gibt es denn? Das ist wohl was anderss als bei User-Agent
Komnbinationen!
gibt es 10? Wieviele kennt Ihr? mit 2 Varianten decke ich garantiert
80-90% ab!
solange es im HTTP-Protokoll keine Möglichkeit gibt, mitzuteilen,
welche dieser Varianten vorliegt, wären schon zwei zuviel.
Es soll doch nur eine Vereinfachung für eine Intranet-Anwendung
sein!
Aha. Im Intranet gelten natürlich andere Regeln.
Allerdings sollte man sich gründlich überlegen, ob man auf proprietäre
Eigenschaften eines Browsers setzen will, nur um etwas zu unterstützen,
was ein normaler Anwender eh nicht tun wird.
_Gerade_ in einem Intranet wird _kein_ Anwender irgendwelche URLs
in die Location-Zeile eingeben - was der will, das ist eine sinn-
volle Navigations-Wurzelseite mit Links zu allen wichtigen firmen-
internen Diensten, alternativ vielleicht von Firmenseite vorgegebene
Bookmarks, und vielleicht eine einfache Suchmachine. Aber keine
Umlaute in URLs ...
Viele Grüße
Michael
Hi!
solange es im HTTP-Protokoll keine Möglichkeit gibt, mitzuteilen,
welche dieser Varianten vorliegt, wären schon zwei zuviel.
Aber ich kann ja per RewriteRule verschiedene Varianten abfangen!
Es soll doch nur eine Vereinfachung für eine Intranet-Anwendung
sein!
Aha. Im Intranet gelten natürlich andere Regeln.
Allerdings sollte man sich gründlich überlegen, ob man auf proprietäre
Eigenschaften eines Browsers setzen will, nur um etwas zu unterstützen,
was ein normaler Anwender eh nicht tun wird.
Es war auch eher ein allgemeines Interesse.
_Gerade_ in einem Intranet wird _kein_ Anwender irgendwelche URLs
in die Location-Zeile eingeben - was der will, das ist eine sinn-
volle Navigations-Wurzelseite mit Links zu allen wichtigen firmen-
internen Diensten, alternativ vielleicht von Firmenseite vorgegebene
Bookmarks, und vielleicht eine einfache Suchmachine. Aber keine
Umlaute in URLs ...
Ja, Intranet ist nicht ganz zutreffend, es geht um ein Tool auf das bestimmte Mitarbeiter eines Unternehmens zugreifen. Ob das jetzt direkt in den URL-Baum des Intranets integriert wird ist noch nicht so sicher, da es um sehr sensible Daten geht.
Naja, kann das ja so wie es jetzt ist implementieren, von wem das dann verwendet wird kann sich ja dann jeder selbst überlegen.
ich persönlich finde eine Eingabe in die Adresszeile wie
server.de/neu
server.de/übersicht
....
gar nicht soooo unangenehm.
Grüße
Andreas
Hallo!
Was macht denn jetzt der IE aus dem "ü"? Wie bekomme ich das raus? Im Dateinamen verhält er sich wohl anders als bei Parametern.
Jedenfalls kommt weder %C3%BC, noch %FC, und auch kein ü an. Komischerweise komtm beim Mozilla ein echtes ü an, was ich nur durch zufall mit folgender Rewrite rule erfahren habe:
RewriteRule ^ü /uebersicht.php [L]
Wie kann ich denn am besteb Testen wie der Browser den Dateinamen verändert? Denn ich solange ich das nicht weiß kann ich auch kein Script verwenden um die Angaben auszuwerten - ein Teufelskreis!
Grüße
Andreas
Hallo!
Wer 10 Sekunden Zeit hat, kopiert mal folgenden Link in die Adresszeile Eures Browsers:
http://knet-systems.de/übersicht
Und bitte beachtet:
a) das soll primär nur mit Windows 95,98,NT,ME,2K,XP funktionieren
b) es soll da nur im IE und Mozilla funktionieren
c) es handelt sich um ein Intranet
Diese Kombinationen interessieren mich vorrangig. Geht das irgendwo nicht?
Wenn jemand andere Kombinationen hat interessiert es mich natürlich auch, und was genau die an den Seerver schicken. Herausbekommen habe ich das zufällig über einen kleinen Trick, ich habe einfach mal eingegeben:
www.web.de/ä.htm
www.web.de/Ä.htm
www.web.de/ö.htm
...
dann schreibt web.de die Zeichen da hin ;-) mit denen geht's dann prima! So sieht die .htaccess aus:
---------------------- .htaccess - Anfang - ----------------------
Options +MultiViews
RewriteEngine On
RewriteRule ^(.*)(ä|Ä|ä|Ä)(.*) /$1ae$3 [R=301,L]
RewriteRule ^(.*)(ö|Ö|ö|Ö)(.*) /$1oe$3 [R=301,L]
RewriteRule ^(.*)(ü|Ü|ü|Ü)(.*) /$1ue$3 [R=301,L]
---------------------- .htaccess - Ende - ----------------------
Ich weiß das das nicht korrekt ist, aber es geht um eine kleine Vereinfachung im Intranet. Was ich noch noch überlege wie ein vernünftiger Fall-back Mechanismus aussehen könnte!
Vielen Dank und viele Grüße,
Andreas
Hi Andreas,
ich las neulich (das ist schon fast ein Jahr her), dass die verrückten Amis in "ihrem" Internet ab sofort umlaute zulassen würden und als ganz normale Zeichen auch verarbeiten könnten.
Dachte noch so bei mir, da haben sie uns konditioniert, dass man sowas auf gar keinen Fall machen darf, und nun tun sies selber... Das hätte ja zur Folge, dass wir diese US-Seiten gar nicht aufru´fen könnten aus Europa.
Was daraus geworden ist, weiß ich nicht. Den Artikel hab ich bestimmt noch irgendwo und das war auch kein Aprilscherz, sondern total ernst gemeint.
Gruß
Tom