Hallo,
ich habe auf Grund eines Fehlers im PHP internen json_encode (https://bugs.php.net/bug.php?id=51947) auf die builtIn Funtion von Zend (Version 1.11.12) umstellen müssen:
Nun wird auch empfohlen bzw. ist es notwenig für String Funktionen das mbstring.func_overload zu aktivieren (=7), damit Zend intern auch mit Multibyte Strings klarkommt. Soweit so gut.Code:Zend_Json::$useBuiltinEncoderDecoder = true;
Die Methode Zend_Json_Encoder::encodeUnicodeString($value) ermittelt nun die Länge der Zeichenkenne mittels
und iterriert dann über alle Zeichen einzelt in einer for Schleife. Dabei werden bestimmte Zeichen escaped bzw. in ihre UTF-8 Entsprechnungen umgewandelt. Problem hierbei ist, dass das Byte weise passiert - automatische StringToArray Conversion:Code:$strlen_var = strlen($value);
strlen (im Multibyte Modus) ermittelt aber ein Multibytezeichen als 1. Wenn jetzt also bspw 10 2-Byte Zeichen in meiner Zeichenkette drin sind, ist der encodete String 10 Zeichen zu kurz. Die übrigen umgewandelten Zeichen passen.Code:for($i = 0; $i < $strlen_var; $i++) { $ord_var_c = ord($value[$i]); [...]
Einzige Möglichkeit die ich sehe ist im Zend Framework bei der Verwendung von strlen intern auf ASCII umzuschalten (2. Parameter: encoding), damit er die reichtige Stringlänge behandelt.
Seht ihr hier irgendwelche Probleme oder eine andere Lösungsmöglichkeit?Code:$strlen_var = strlen($value, "ASCII");
Danke!
Patrick



LinkBack URL
About LinkBacks



Zitieren
Lesezeichen