WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   IE und Umlaute (http://www.wcm.at/forum/showthread.php?t=152671)

jak 09.12.2004 16:14

IE und Umlaute
 
Ich habe ein Problem mit Umlauten:
Ich lese mit Php (readdir($verz))
Dateien aus einem Verzeichniss ein. Wenn der Dateiname Umlaute enthält erzeugt der Internet Explorer ungültige Pfade:
Aus "2004 12 a_ä_ö_ü_ß_test.jpg" im Quelltext wird "2004 12 a_\xc3\xa4_\xc3\xb6_\xc3\xbc_\xc3\x9f_test.jpg". Firefox erzeugt daraus den Pfad: "2004%2012%20a_%E4_%F6_%FC_%DF_test.jpg".
FF zeigt das Bild an, IE nicht.
Weiß jemand wie man das beheben kann?
Oder anders gesagt: Was muß im Soucecode stehen, damit der IE Umlaute korrekt codiert? Im Moment habe ich <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />.

Jak

_m3 09.12.2004 16:19

Lies bitte mal die RFC fuer URLS, ja?

Das ist kein IE Problem, sondern eines, das Du mit Deinem Script Loesen musst:
Zitat:

; HTTP

httpurl = "http://" hostport [ "/" hpath [ "?" search ]]
hpath = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]

...

uchar = unreserved | escape

...

unreserved = alpha | digit | safe | extra

lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
"i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
"q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
"y" | "z"
hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
"J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
"S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"

alpha = lowalpha | hialpha
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
"8" | "9"
safe = "$" | "-" | "_" | "." | "+"
extra = "!" | "*" | "'" | "(" | ")" | ","

http://www.faqs.org/rfcs/rfc1738.html

Umlaute, Leerzeichen und andere Sonderzeichen sind in URLs nicht erlaubt!

jak 09.12.2004 16:37

Hab' das gerade korrigiert, danke.
Ich les' mir halt im normalfall nicht den RFC durch, wenn ich eine Php-Script schreibe.
Gibt's eigentlich irgendwo eine Auflistung aller Escape-Sequenzen?

Jak

_m3 09.12.2004 16:46

Falls Du damit die %xx Werte meinst - das sind einfach nur die ASCII-Werte des entsprechenden Zeichens.
Die HTML 4.1 Spez. hat eine Liste im Anhang.

Spez. lesen zahlt sich aus, auch fuer einen PHP-"Programmierer".

käptn 09.12.2004 17:26

Zitat:

Original geschrieben von _m3
PHP-"Programmierer".
Also solche subtilen Seitenhiebe lass ma mal lieber, ja? ;) :ms:

~

jak 09.12.2004 17:50

Ich geb's ja zu ich bin kein Hardcore C Programmierer sondern ein Java GarbageCollection Benutzer (aka Beckenrandschwimmer) ;).
Und ob man jetzt Php schreibt oder programmiert ist eine Definitionssache. Im Endeffekt geht es darum, daß der PC das macht was man will. Ob man das in Assembler oder mit Php erreicht ist egal. Ich hab's mir sehr verkneifen müssen in meiner Antwort das Wort "Website" zu vermeiden.:ms:

Jak

Potassium 09.12.2004 19:29

du könntest auch folgende funktion benutzen bevor du was ausgibst, die wandelt alles in html-konforme zeichen um.
Zitat:

function encode_plain_to_html($plain){

$plain = preg_replace("/ö/","&ouml;",$plain);
$plain = preg_replace("/ä/","&auml;",$plain);
$plain = preg_replace("/ü/","&uuml;",$plain);
$plain = preg_replace("/ß/","&szlig;",$plain);
$plain = preg_replace("/\<(?![\S]+)/","&lt;",$plain);
$plain = preg_replace("/(?:\s)+[?![\/]+]\>/","&gt;",$plain);
$plain = preg_replace("/Ö/","&Ouml;",$plain);
$plain = preg_replace("/Ä/","&Auml;",$plain);
$plain = preg_replace("/Ü/","&Uuml;",$plain);
$plain = preg_replace("/&(?!(#)?[[:alnum:]]+;)(?!(\#)+)/i","&amp;",$plain);
$plain = preg_replace("/\<br\>/","
",$plain);
return $plain;
}
@jak: meinst du nicht "internet-seite"?

@_m3: :p :p :p

_m3 10.12.2004 11:08

Kaum bin ich mal ein paar Stunden nicht online ... ;)

Ich wuerde das Uebel eher an der Wurzel packen und keine Files mit Umlauten, Leerzeichen etc. zulassen, falls das geht. Ich kenn ja das Umfeld nicht.

jak 10.12.2004 15:29

@Potassimum Aja, es war die Internet-Seite.

@_m3: Wenn du Lust hast 562 Dateien von denen ein großer Teil Umlaute und alle Leerzeichen enthalten umzubenennen... ;)
Da sind mir ein paar Zeilen Php die das Übel maskieren lieber.

Auf jeden Fall danke für die Hilfe, jetzt geht alles.

Jak


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag