wddx... und langer String

Ich habe ein Problem mit

SetValueString( 41079 , wddx_serialize_value($data));

bzw. genauer mit

$data = wddx_deserialize( GetValueString( 41079 ));

wddx_serialize_value funktioniert und in der Variablen steht der gewünschte Werte

<wddxPacket version='1.0'><header/><data><struct><var name='...

drin.

Beim Zurücklesen bleibt $data leider leer, außer ich verkürze einige lange

<string>...</string>

Felder.

Warum funktionert das „Wegschreiben“ aber nicht das „Zurückholen“?

Hi,
habe grad mal einen Test gemacht:

das Problem ist wohl das wddx_serialize_value zwingend UTF8-Daten erwartet.


$data=array("TEST"=>"Häääällo");  // Testdaten

SetValueString(53228, wddx_serialize_value($data));

$data = wddx_deserialize( GetValueString( 53228 ));

print_r($data);

Diese Code Funktioniert nur wenn KEINE Umlaute vorhanden sind.
Im oberen Beispiel scheitert es an den 4 „ä“!

Dieser Code Funktioniert:


$data=array("TEST"=>utf8_encode("Häääällo"));  // Testdaten

SetValueString(53228, wddx_serialize_value($data));

$data = wddx_deserialize( GetValueString( 53228 ));

print_r($data);

Es gibt auch einen Workaround
Änder mal deinen Code so:


$header = '<?xml version="1.0" encoding="iso-8859-1"?>';
$data = wddx_deserialize($header. GetValueString( 41079 ));  

Danke für die Info. Es war wohl etwas spät gestern abend, nach erneuter Suche habe ich den Hinweis auf die „german umlauts“ auch gefunden.

Ich teste heute abend und melde mich dann.

[Update]
War ja klar ;). Danke.

Und da die Werte eh’ als html-Entity reinkommen wandele ich sie erst hinterher um.