Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute in CGI Skripten
nonameruler
03-03-2002, 18:38
ich hab nen problem das der im query kein umlaute anzeigen kann bsp: skript.cgi?do&blblblblalal
wie bekomm ich das zum laufen ? das der die umlaute mit übergibt ?
sticky bit
03-03-2002, 19:10
Jedes nicht alphanumerisches Zeichen wird in HTTP folgendermassen dargestellt, '%' <ASCII Nummer in hexadeziamler Schreibweise>, sollte der Browser aber automatisch Umwandeln wenn du sowas eingibst...
Versteh das Problem ned so ganz?
nonameruler
04-03-2002, 14:47
das problem ist wenn er einen link mit umlaut z.b. eine verlinkte datei anzeigt und in dem namen der file is nen umlaut dann setzt der für den umlaut nen "?" und dann denkt der bei m query das des ne funktion währe und dann kommt halt nen error
sticky bit
04-03-2002, 15:48
Also du hast meinet wegen ein File namens 'überweisung.txt' und wenn das geindext wird geht der Link auf '?berweisung.txt' statt '%fcberweisung.txt'?
Dann schmeiss den Server weg...
Oder ist doch der Browser daran schuld, kann er was ned richtig interpretieren?
Ich glaub du solltest mal den Quelltext posten, wo das passiert...
nonameruler
04-03-2002, 17:44
kann das sein das der server nicht ISO-8859-1(oder 15) fähig ist ??
sticky bit
04-03-2002, 20:26
ISO-8859-1 ist AFAIK der Standart, das muss gehen, hat aber IMHO auch nicht viel damit zu tun...
Poste halt mal den Quelltext des Skripts und / oder der HTML-Ausgabe...
nonameruler
04-03-2002, 21:39
da steht jetzt z.b.:
original file name : Der_Bär_im_blauen_Haus.txt
und angezeigt in browser wird die file als: Der_B?r_im_blauen_Haus.txt
also übernimmt er beim query das nur als script.cgi?file&Der_B
und weiter gehts net, und deswegen bekomm ich nen error das er die file net finden konnte
ps: der name der file war jetzt frei erfunden :D
sticky bit
05-03-2002, 10:09
Hmm, und der Link wird von einem Skript generiert?
Ja? Dann poste doch mal den Source...
Kurz gesagt, das Skript muss in der Ausgabe den Link also das Attribut href des a Tags codieren. Da gäbs mehrere Möglichkeiten, entweder mit pack oder mit printf, wenn ich jetzt von PERL ausgehe zu mindest...
sticky bit
05-03-2002, 16:11
Schau dir mal folgendes Skript an, hab ich mal für dich geschriebn, vielleicht wirds dann klarer:
#!/usr/bin/perl
use strict;
sub escape {
$_[0] =~ s/([^\w\.\~\-])/'%' . unpack("H8", $1)/eg;
return($_[0]);
}
print("Content-Type: text/html\n\n");
print("<html>\n<head>\n<title>Index</title>\n</head>\n\n<body>\n");
opendir(DIR, ".");
while (defined(my $file = readdir(DIR))) {
printf("<a href=\"%s\">%s</a><br>\n", &escape($file), $file);
}
print("</body>\n</html>");
Die Sub escape() sollte dir helfen für Files. Wenn du generell Escapen willst, solltest du die Klasse in der RegEx in dieser allerdings u. U. etwas erweitern, etwa so [^\w\.\/\?\=\&\#\~\-], aber wenn dus für eben Filesnamen verwedest sollten Zeichen wie z. B. das '?' (Sofern man so was wirklich in einem File-Namen braucht. Ich zweifel ja da dran ob man sich nicht einfach auf alphanumerische Zeichen beschränken sollte...) wohl besser escaped werden, da der Server das Nachfolgende sonst IMHO als Query interpretiert.
Ach ja und 100% sicher bin ich mir mit den Sonderzeichen in der Klasse leider auch ned, leider hab ich bisher keine Beschreibung gefunden welche Zeichen denn nun escaped werden müssen und welche nicht, bzw. welche nicht escaped werden dürfen, ich denke aber das oben erwähnte '?' fällt darunter. However zur Not, in deinem Fall escape alles, wenn was ned klappt, den ganzen Filenamen das wird zwar sau unleserlich aber würde (müsste wenn ales korrekt implementiert ist)gehen...
nonameruler
05-03-2002, 17:19
danke für dein script ..
hier ist so ein script was ich mein (der quellcode):
http://server2040.virtualave.net/search4fun/FTPex.txt
entweder liegts an meinem eigenene server oder hmmm...
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.