Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Umlaute für eine Get Übertragung konvertieren
Frage
Moin
Ich muss an einer Stelle Umlaute per Get übertragen.
Leider erzeugt das beim Apache einen "Internal Server Error".
Gibt es eine Funktion die automatisch aus allen Umlauten ASCII Codes oder sowas macht und später diese zurückverwandelt?
Ich suche schonmal weiter ...
Gruß
ThomasOOP
Antwort 1 von Nessus
Hi,
urlencode und urldecode sind die Zauberworte.
http://ffm.junetz.de/members/reeg/DSP/node14.html
Nessus
urlencode und urldecode sind die Zauberworte.
http://ffm.junetz.de/members/reeg/DSP/node14.html
Nessus
Antwort 2 von Thomasoop_ohne
hmm dachte schon das wäre es gewesen Nessus aber leider mag er das auch nicht
Fehlermeldung aus dem Apache Log
(22)Invalid argument: utf8 to ucs2 conversion failed on this string: REDIRECT_QUERY_STRING=street=Talbotstra\xdfe
[Tue Aug 16 13:20:30 2005] [error] [client 10.104.1.50] (22)Invalid argument:
das \xdf ist dann das ß
anscheinend liegt da eine grundsätzlich fehlkonfiguration des apaches vor
mist
Fehlermeldung aus dem Apache Log
(22)Invalid argument: utf8 to ucs2 conversion failed on this string: REDIRECT_QUERY_STRING=street=Talbotstra\xdfe
[Tue Aug 16 13:20:30 2005] [error] [client 10.104.1.50] (22)Invalid argument:
das \xdf ist dann das ß
anscheinend liegt da eine grundsätzlich fehlkonfiguration des apaches vor
mist
Antwort 3 von Fich
Ich verstehe es auch nicht. Aber nur mal als Hinweis:
Das "ß" wird richtig als "%C3%9F" codiert, nicht als "%DF"! Das sieht man, wenn man im Browser ein "ß" innerhalb eines Textfeldes eines GET-Formulars abschickt.
Hat wohl irgendwas mit utf8 zu tun. Falls Du die Lösung findest, bitte posten!
Das "ß" wird richtig als "%C3%9F" codiert, nicht als "%DF"! Das sieht man, wenn man im Browser ein "ß" innerhalb eines Textfeldes eines GET-Formulars abschickt.
Hat wohl irgendwas mit utf8 zu tun. Falls Du die Lösung findest, bitte posten!
Antwort 4 von ThomasOOP_Ohne
(not)lösung
javascript
bzw
PHP
immer den weg des geringsten wiederstandes gehen ...
javascript
zlvArbe = new String(zlvtext);
zlvArbe = zlvArbe.replace(/ß/, ´225´);
zlvArbe = zlvArbe.replace(/ä/, ´132´);
zlvArbe = zlvArbe.replace(/ö/, ´148´);
zlvArbe = zlvArbe.replace(/ü/, ´129´);
zlvArbe = zlvArbe.replace(/Ä/, ´142´);
zlvArbe = zlvArbe.replace(/Ö/, ´153´);
zlvArbe = zlvArbe.replace(/Ü/, ´154´);
bzw
PHP
function uml_encode ( $zlvtext ) {
$zlvtext = str_replace(´ß´, ´225´, $zlvtext );
$zlvtext = str_replace(´ä´, ´132´, $zlvtext );
$zlvtext = str_replace(´ö´, ´148´, $zlvtext );
$zlvtext = str_replace(´ü´, ´129´, $zlvtext );
$zlvtext = str_replace(´Ä´, ´142´, $zlvtext );
$zlvtext = str_replace(´Ö´, ´153´, $zlvtext );
$zlvtext = str_replace(´Ü´, ´154´, $zlvtext );
return $zlvtext;
}
function uml_decode ( $zlvtext ) {
$zlvtext = str_replace(´225´, ´ß´, $zlvtext );
$zlvtext = str_replace(´132´, ´ä´, $zlvtext );
$zlvtext = str_replace(´148´, ´ö´, $zlvtext );
$zlvtext = str_replace(´129´, ´ü´, $zlvtext );
$zlvtext = str_replace(´142´, ´Ä´, $zlvtext );
$zlvtext = str_replace(´153´, ´Ö´, $zlvtext );
$zlvtext = str_replace(´154´, ´Ü´, $zlvtext );
return $zlvtext;
}
immer den weg des geringsten wiederstandes gehen ...
Antwort 5 von Fich
Mußt halt aufpassen, daß Du nicht mal aus versehen eine Zahl sendest und diese dann als Umlaut ankommt. ;-)
Antwort 6 von ThomasOOP_ohne
es ist eine reine strassensuche ... ;)
Antwort 7 von jom
wenn du mehrere sachen saugen willst versuchs doch mit mget.
Antwort 8 von Nessus
@jom
ROTFL, deine Antwort ist doch nur daneben ;-)
Nessus
ROTFL, deine Antwort ist doch nur daneben ;-)
Nessus
Antwort 9 von ThomasOOP_ohne
glaube ich muss mein passwort mal rauskramen um endlich wieder bewerten zu können ;)

