Seite 1 von 1

UTF-8 kodierten Sonderzeichen als URL Parameter

Verfasst: 07.02.2005, 11:33
von Fox Mulder
Hallo,

ich übergebe UTF-8 kodierten Sonderzeichen als URL Parameter.
Also z.B. "test.php?variable=%c3%84" für "variable=Ä".
Wenn ich den URL Parameter in test.php auslese kommt aber "Ä" an, ich kann somit keinen Vergleich auf den ursprünglich übergebenen URL-Parameter starten, da "%c3%84" ja nicht gleich "Ä".

Hier ein kleiner Versuchsaufbau dazu: "test.php"
<?php

echo "<br><br>";
echo "Übergabe von UTF-8 Kodierten Sonderzeichen Ä Ö Ü ä ö ü ß als URL Parameter<br><br>";

$string = "%c3%84_%c3%96_%c3%9c_%c3%a4_%c3%b6_%c3%bc_%c3%9f";

echo "<br><br> <a href=\"test.php?variable=$string\">Testaufruf mit URL Parameter</a><br>";


// Wenn URL Parameter existiert ausgeben

if($variable) {

$variable = $_GET[variable];

echo "<br><br>";
echo "<b>Übergebener URL-Parameter:</b> $string";
echo "<br>";
echo "<b>Ausgabe des URL-Parameters:</b> $variable";
echo "<br><br><br>";
echo "<b>Frage:</b><br><br>";
echo "Warum wird der übergebene Parameter $string <br>";
echo "verändert zu $variable";
echo "<br><br><b>Wie kann man dies verhindern?</b>";
}

?>

Wie kann man verhindern das bei Übergabe des URL Parameters dieser verändert wird?

Verfasst:
von

Verfasst: 07.02.2005, 12:58
von wurzel
dein server sendet ein anderes charset als header voraus. wenn du:

Code: Alles auswählen

header&#40;'Content-Type&#58;text/html; charset=UTF-8'&#41;;
am anfang sendest, klappts auch mit den umlauten ...

Verfasst: 07.02.2005, 13:11
von Fox Mulder
wurzel hat geschrieben:dein server sendet ein anderes charset als header voraus. wenn du:

Code: Alles auswählen

header&#40;'Content-Type&#58;text/html; charset=UTF-8'&#41;;
am anfang sendest, klappts auch mit den umlauten ...
Mir geht es nicht um die Darstellung!
Die Zeichen Ä_Ö_Ü_ä_ö_ü_ß werden durch den UTF-8 Header jetzt korrekt im Browser dargestellt, das ist klar.

Im Quelltext stehen aber immer noch die Zeichen Ä_Ö_Ãœ_ä_ö_ü_ß und das sind nicht die von mir übergebenen URL - Parameter.

Ich versteh nicht warum die URL Parameter die ich übergeben habe irgendwie/irgendwo umgewandelt werden und ich somit keinen Vergleich mehr auf die URL Parameter machen kann.

Gruss

Verfasst: 07.02.2005, 13:28
von wurzel
h versteh nicht warum die URL Parameter die ich übergeben habe irgendwie/irgendwo umgewandelt werden und ich somit keinen Vergleich mehr auf die URL Parameter machen kann.
weil die parameter zusätzlich urlencodiert sind ... wenn du den weg gehst:

Code: Alles auswählen

<?php
echo $string=urlencode&#40;utf8_encode&#40;'Ä_Ö_Ü_ä_ö_ü_ß'&#41;&#41;;
echo '<br />';
echo utf8_decode&#40;urldecode&#40;$string&#41;&#41;;
?>
passt es auch wieder ... ohne utf-header

Verfasst: 07.02.2005, 13:42
von Fox Mulder
wurzel hat geschrieben:weil die parameter zusätzlich urlencodiert sind ... wenn du den weg gehst:

Code: Alles auswählen

<?php
echo $string=urlencode&#40;utf8_encode&#40;'Ä_Ö_Ü_ä_ö_ü_ß'&#41;&#41;;
echo '<br />';
echo utf8_decode&#40;urldecode&#40;$string&#41;&#41;;
?>
passt es auch wieder ... ohne utf-header
Ja, das scheint zu klappen, herzlichen Dank!!!

Gruss

Verfasst: 11.10.2018, 09:46
von ny_unity
Hallo,

ich habe mich hier angemeldet, nur um DANKE zu sagen für den Beitrag von wurzel.

Schön, das ein 13-Jahre alter Beitrag mir helfen konnte =)