Perl CGI und Umlaute in Links - Problem bei Opera [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Perl CGI und Umlaute in Links - Problem bei Opera [gelöst]

Beitrag von nepos » 04.04.2005 10:03:16

Hallo zusammen!

Ich hab hier ein Perl-Skript, das den Inhalt eines Verzeichnisses als HTML-Seite anzeigt.
Die Dateinamen hier enthalten teilweise Umlaute. Die einzelnen Dateien sind in der Seite verlinkt.
So, das eigentliche Problem: wenn ich eine Datei mit Umlaut im Namen mit Opera oeffnen will, dann krieg ich einen "File not Found"-Fehler:

Code: Alles auswählen

The requested URL /verzeichnis/dateiü.html was not found on this server.
Statt dem seltsamen Sonderzeichen hier sollte da aber eigentlich nur ein "ü" im Dateinamen sein.
Woran liegt das, dass das hier so komisch laeuft?
Der Firefox und sogar der IE schlucken den Link und schaffen es, die richtige Datei anzufordern. Nur der Opera zeigt mir zwar ein "ü" an, fordert aber bei Server die Datei mit dem "ü" anstelle des "ü".
Vielleicht hat ja von euch wer ne Idee, was ich da machen kann.
Danke schon mal!

Ciao,
Matthias
Zuletzt geändert von nepos am 11.04.2005 13:10:05, insgesamt 1-mal geändert.

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 04.04.2005 10:21:35

Hi,

so ein aenhnliches Problem habe ich mit php auch. Loesung: auf Sonderzeichen & Umlaute verzichten.

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 04.04.2005 10:26:53

Hm, gibts da wirklich keine andere Loesung?
Die Dateinamen werden aus Werten in der Datenbank aufgebaut und hier sind die Umlaute leider zwingend drin.
Es gab doch eine Moeglichkeit, Umlaute+Sonderzeichen in ner URL entsprechend zu kodieren (irgendwas mit %xx).
Leider werde ich im Web dazu auch nicht wirklich fuendig.
Und was mich eben wundert: nur der Opera hat das Problem, obwohl der Charset korrekt eingestellt ist. Firefox und IE machen es richtig.
Oder muss/kann ich da eventuell am Apachen noch was einstellen?

geier369
Beiträge: 32
Registriert: 01.09.2004 07:49:17

Beitrag von geier369 » 05.04.2005 08:46:55

Hi,

zwei Codeschnipsel, die dir vielleicht helfen:
sub url_encode{
my $text = shift;
$text =~ s/([^a-z0-9_.!~*'() -])/sprintf "%%%02X", ord($1)/egi;
$text =~ tr/ /+/;
return $text;
}
Codiert Sonderzeichen in URL-Format


sub decode{
my $text = shift;
$_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$_ =~ tr/\+/ /;
$_ =~ s/\W/ /g;
return $text;
}
Decodiert codierte Sonderzeichen

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 05.04.2005 11:51:48

Super!
Danke fuer den Tipp, werde ich dann bei Gelegenheit mal testen.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 08.04.2005 12:51:33

Hm, schade, scheint nicht zu klappen.
Sieht fuer mich aber so aus, als waere das ein Problem mit Opera.
Eventuell hats auch was mit dem Charset der Seite zu tun.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 11.04.2005 13:11:44

Also, ich hab das Problem geloest. Es war eine Einstellung im Apache und zwar AddDefaultCharset. Das hatte die ISO-8859-1 drin. Nach setzen der Option auf off geht es auch mit dem Opera.

Antworten