Probleme mit En- und Decoding von Umlauten

Alles, was den Apache betrifft, kann hier besprochen werden.

Probleme mit En- und Decoding von Umlauten

Postby mimael » 29. August 2004 14:43

Hallo,

ich habe bei mir mit XAMPP folgendes Problem, wenn ich eine Datei aufrufen will, die einen Umlaut im Namen hat:

http://localhost/phptest/abc/karten/HerzKönig.bmp

Dieser Aufruf wird automatisch umgesetzt zu:

http://localhost/phptest/abc/karten/HerzK%F6nig.bmp

und sollte damit ja eigentlich funktionieren, oder? Ist ja schließlich das Standard-Encoding für Umlaute und klappt eigentlich überall so.

Nur Apache quittiert bei mir dann:

You don't have permission to access /phptest/abc/karten/HerzKönig.bmp on this server.

Wenn ich jetzt einfach über das Directoy-Listing reingehe, also mit

http://localhost/phptest/abc/karten/

Kann ich die Datei aufrufen und es klappt; aber in der URL steht:

http://localhost/phptest/abc/karten/HerzK%c3%b6nig.bmp

??? Was ist das für ein Encoding; muss da vielleicht was an der Webserver-Konfiguration geändert werden oder wo liegt das Problem?

Ich bedanke mich schonmal für Antworten,

Gruß,

mimael
mimael
 
Posts: 4
Joined: 29. August 2004 14:34

Postby nemesis » 31. August 2004 06:23

Teste deinen Browser nochmal, wenns IE ist, ignorier es...
Habs einfach mal in Firefox eingegeben, HerzKönig wird zu HerzK%C3%B6nig umgeschrieben (auch beim testen ohne ne konkrete URI)..
Ubuntu 8.04 | SMP P3 1.4 GHz | 6 GByte RegECC | 74 GByte Seagate 15k5 system | 3Ware 9550SXU-4LP with 4x 500 GByte Seagate ES2 Raid 10 data | StoreCase DE400 | PX-230A | Intel Pro/1000MT Dual PCI-X
User avatar
nemesis
AF Moderator
 
Posts: 999
Joined: 29. December 2002 13:14
Location: Ingolstadt

Postby mimael » 01. September 2004 18:27

Danke für die Antwort,

hmm... ich setze auch firefox ein (was sonst? ;) )

aber da hab ich das beschriebene Problem...

bisher kannte ich aber nur die %XX-Schreibweise für Sonderzeichen? Da wird das jetzt in %XXXX umgesetzt...
mimael
 
Posts: 4
Joined: 29. August 2004 14:34

Postby Wiedmann » 02. September 2004 02:53

Ist ja schließlich das Standard-Encoding für Umlaute und klappt eigentlich überall so.

Was ist ein Standard-Encoding? Das Encoding richtet sich ja immer nach dem verwendeten Zeichsatz:

ö
ISO 8859-1 = %f6
UTF-8 = %c3%b6

Würde aber immer Umlaute, soweit es geht, in Ordner und Dateinamen vermeiden.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mimael » 02. September 2004 23:03

Ja... das mit dem UTF-8 ist eine Erklärung. Sogar eine sehr gute ;)

Also wär die einzige Möglichkeit, per Skript die URL schon als UTF-8 anzulegen, damit sie der Server akzeptiert?

Das führt natürlich zu dem Problem, dass ich nicht weiß, was der Server akzeptiert...

Gibt's dafür eigentlich eine Stellschraube bei Apache? Ich hab nämlich schon öfters die ISO 8859-1 Codierung ohne Probleme verwendet.

Ich habe mit meinem Firefox auf anderen Servern keinerlei Probleme mit dem Encoding vom Umlauten -- dachte daher eigentlich auch, dass das "Vermeiden" langsam Geschichte wäre...

Macht mich dann aber schon misstrauisch, dass die sich nicht von selbst einigen können...

zum Teil stimmt's ja, aber andererseits erwarte ich mittlerweile, dass das umgesetzt werden kann, um unschöne Schreibweisen zu umgehen... (wenn in PHP und Java Umlaute selbst schon in Bezeichnern auftauchen dürfen...)
mimael
 
Posts: 4
Joined: 29. August 2004 14:34

Postby Wiedmann » 03. September 2004 10:04

Also wär die einzige Möglichkeit, per Skript die URL schon als UTF-8 anzulegen, damit sie der Server akzeptiert?

Hmm, in einem HTML-Quelltext sollte eine URI immer richtig kodiert stehen (Insbesondere was evtl. Parameter angeht). Ob du das jetzt von Hand reinschreibst, oder von z.B. PHP erledigen lässt ist eigentlich egal --> das Ergebnis ist ja das selbe.

Sich da auf den Browser zu verlassen ist ungeschickt. Beispiel:
"<a href="http://localhost/HerzKönig.bmp">HerzKönig.bmp</a>"

Beim IE wird da immer "http://localhost/HerzK%C3%B6nig.bmp" daraus.
Das selbe auch, wenn man die URL mit Umlaut direkt in die Adresszeile eintippt.

Beim Firefox z.B. kommt auf das character-encoding der Seite an. Ist die Seite selbst in "utf-8" kodiert, wird auch "http://localhost/HerzK%C3%B6nig.bmp" daraus.
Ist die Seite in "iso-8859-1" kodiert, oder gibt man die URL direkt in der Adresszeile ein, wird "http://localhost/HerzK%F6nig.bmp" daraus.

Das führt natürlich zu dem Problem, dass ich nicht weiß, was der Server akzeptiert...

Das kommt auf das Dateisystem des Serverbetriebssystem an. Windows speichert die Dateinamen in Unicode. Der Apache erwartet also eine Kodierung in UTF-8 und reicht den Namen direkt an Windows weiter.

Ausnahme: Ein Apache 1.x unter Windows erwartet die URI in ASCII-kodiert und setzt das dann von selbst in das unter Windows korrekte Format um. (Die Apache-Macher finden das durchaus i.O. das der 2.x das nicht mehr macht...)

Unter Linux benutzt du dann die von dir gewöhnte Kodierung in ASCII.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mimael » 03. September 2004 22:16

Okay, danke für die Antwort... werde also meine Skripte, wenn ich denn nicht auf Umlaute verzichten will, auf die jeweilige Plattform vom Encoding her abstimmen müssen... (wegen verschiedener Encodings, weil Apache ja offensichtlich manchmal UTF-8 und manchmal ISO-8856-1 erwartet)

hmm... naja, mal sehen :)

Ciao,

mimael
mimael
 
Posts: 4
Joined: 29. August 2004 14:34


Return to Apache

Who is online

Users browsing this forum: No registered users and 5 guests