Problem mir urlencode()
am 12.09.2007 - 15:16 Uhr in
Hi,
ich habe ein Problem mit Drupal wenn es um urlencode geht.
Umlaute werden hier nicht korrekt encodet. Das gibt leider große Probleme bei dem Zugriff auf externe ABIs.
Folgender Code gibt folgendes aus. Leider ist diese Ausgabe nicht im korrekten Fomrat.
Code:
<?php
$TEST = "ÄäÖöÜüß";
$TEST = urlencode($TEST);
echo $TEST . "<br>";
?>
Ausgabe:
%C3%84%C3%A4%C3%96%C3%B6%C3%9C%C3%BC%C3%9F
Auf dem selben Server gibt der selbe Code folgendes aus. Dieser Code wird allerdings nicht durch Drupal verarbeitet. Nennen wir es eine Test.php. Diese Ausgabe ist so wie ich sie benötige:
Code:
<?php
$TEST = "ÄäÖöÜüß";
$TEST = urlencode($TEST);
echo $TEST . "<br>";
?>
Ausgabe:
%C4%E4%D6%F6%DC%FC%DF
Habe so ganz langsam echt keine Ideen mehr was ich noch machen soll. Ist für mich absolut nicht nachvollziehbar :-)
Vielleicht hat ja hier noch jemand eine Idee.
Also ich bin inzwischen schon dahintergekommen das ich wohl die Hexwerte zurückerhalte und nicht die reinen unicode Werte.
Danke und Gruß
Bastian
- Anmelden oder Registrieren um Kommentare zu schreiben
Wo genau verwendest Du
am 12.09.2007 - 16:31 Uhr
Wo genau verwendest Du dieses Code-Snippet denn? In einem Modul oder node mit php-Filter? Da urlencode() nicht Bestandteil des Drupal API ist, dürfte es keine unterschiedlichen Rückgaben erzeugen. Kann es sein, dass bei der Ausgabe (echo) noch ein Filter am Werk ist? Bei mir jedenfalls wird die erwartete Ausgabe '%C4%E4%D6%F6%DC%FC%DF' erzeugt. Du solltest mal das Devel-Module (http://drupal.org/project/devel) installieren und statt echo() die dpm()-Funktion (oder ähnliches) verwenden:
<?php
$test = "ÄäÖöÜüß";
$test = urlencode($test);
dpm($test);
?>
Diese Ausgabe habe ich zum
am 12.09.2007 - 16:39 Uhr
Diese Ausgabe habe ich zum test in einer NODE mit PHP Option integriert. Am echo Befehl kann es leider nicht liegen da ich den selben Wert wenn ich Ihn in einer Datenbank speicher auch im Kryptischen Format erhalte.
War schon am überlegen ob es am eval liegen könnte.
Gruß
Bastian
Hast Du es mal mit devel
am 12.09.2007 - 17:08 Uhr
Hast Du es mal mit devel versucht? Oder pack das ganze testhalber mal in ein Modul und schau Dir die Ausgabe an. Es bieten sich z.B. hook_init() oder hook_menu() an. Wie speicherst Du denn die Ausgabe in der Datenbank? Solange Du nichts anderes probiert hast, solltest Du NICHTS ausschließen ...
Problem weiter eingegrnzt
am 13.09.2007 - 21:51 Uhr
Ich habe jetzt einfach mal folgenden Code verwendet:
<?
$TEST = "ÜüÖöÄäß";
$TEST = utf8_decode($TEST);
$TEST = rawurlencode($TEST);
echo $TEST . "<BR>";
$TEST = rawurldecode($TEST);
$TEST = utf8_encode($TEST);
echo $TEST . "<br>";
?>
Bei diesem Code erhalte ich die korrekten Werte die wie folgt aussehen
%DC%FC%D6%F6%C4%E4%DF
ÜüÖöÄäß
Das heisst ich kann das Problem umgehen, würde aber trotzdem gerne verstehen warum dieses Problem nicht bei jedem auftritt. Nutze jetzt das Drupal 5.2 in Deutsch Drupalcenter Fassung.
Gruß
Bastian