X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=src%2FEncoder.php;h=ecb64bdd0e75d5f77180fc988b472885710d8937;hb=81718c9d09a3be92fe37fa0ed0f2254d5e65eeb2;hp=d352831fad7871dd6726bd55a7c937e90cb2588f;hpb=3b18a711d68f936d7395ade1903fe0875cb5fd9c;p=plcapi.git diff --git a/src/Encoder.php b/src/Encoder.php index d352831f..ecb64bdd 100644 --- a/src/Encoder.php +++ b/src/Encoder.php @@ -54,8 +54,17 @@ class Encoder 'scalar' => $val ); return (object)$xmlrpcVal; + case 'string': + if (isset($options['extension_api_encoding'])) { + $dval = @iconv('UTF-8', $options['extension_api_encoding'], $val); + if ($dval !== false) { + return $dval; + } + } + //return $val; + // break through voluntarily default: - return $xmlrpcVal->scalarval(); + return $val; } } if (in_array('dates_as_objects', $options) && $xmlrpcVal->scalartyp() == 'dateTime.iso8601') { @@ -279,6 +288,7 @@ class Encoder // What if internal encoding is not in one of the 3 allowed? We use the broadest one, ie. utf8! if (!in_array(PhpXmlRpc::$xmlrpc_internalencoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) { + /// @todo emit a warning $parserOptions = array(XML_OPTION_TARGET_ENCODING => 'UTF-8'); } else { $parserOptions = array(XML_OPTION_TARGET_ENCODING => PhpXmlRpc::$xmlrpc_internalencoding);