|
|
Fox Mulder


: 16.11.2004 : 804
|
| : 07.02.2005, 12:33 : UTF-8 kodierten Sonderzeichen als URL Parameter |
|
|
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? |
|
| Nach oben |
|
 |
wurzel

: 06.02.2005 : 46
|
| : 07.02.2005, 13:58 : UTF-8 kodierten Sonderzeichen als URL Parameter |
|
|
dein server sendet ein anderes charset als header voraus. wenn du:
| Code: |
| header('Content-Type:text/html; charset=UTF-8'); |
am anfang sendest, klappts auch mit den umlauten ...
- gestrichen |
|
| Nach oben |
|
 |
Fox Mulder


: 16.11.2004 : 804
|
| : 07.02.2005, 14:11 : UTF-8 kodierten Sonderzeichen als URL Parameter |
|
|
| wurzel hat Folgendes geschrieben: |
dein server sendet ein anderes charset als header voraus. wenn du:
| Code: |
| header('Content-Type:text/html; charset=UTF-8'); |
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 |
|
| Nach oben |
|
 |
wurzel

: 06.02.2005 : 46
|
| : 07.02.2005, 14:28 : UTF-8 kodierten Sonderzeichen als URL Parameter |
|
|
| : |
| 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: |
<?php
echo $string=urlencode(utf8_encode('Ä_Ö_Ü_ä_ö_ü_ß'));
echo '<br />';
echo utf8_decode(urldecode($string));
?> |
passt es auch wieder ... ohne utf-header
- gestrichen |
|
| Nach oben |
|
 |
Fox Mulder


: 16.11.2004 : 804
|
| : 07.02.2005, 14:42 : UTF-8 kodierten Sonderzeichen als URL Parameter |
|
|
| wurzel hat Folgendes geschrieben: |
weil die parameter zusätzlich urlencodiert sind ... wenn du den weg gehst:
| Code: |
<?php
echo $string=urlencode(utf8_encode('Ä_Ö_Ü_ä_ö_ü_ß'));
echo '<br />';
echo utf8_decode(urldecode($string));
?> |
passt es auch wieder ... ohne utf-header |
Ja, das scheint zu klappen, herzlichen Dank!!!
Gruss |
|
| Nach oben |
|
 |