Zeichencode Wirrwarr Perl
Eternius
- html
1 Axel Richter0 Eternius0 Eternius
0 Axel Richter
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
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
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
So,
ich habs geworkarounded mit:
Unicode::UTF8simple
konvertiere ich den Namen aber nur, wenn ua ein IE ist.
bäh :)
gruss
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
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