public function testUTF8Response()
{
+ $string = chr(224) . chr(252) . chr(232);
+
$s = new xmlrpcmsg('dummy');
$f = "HTTP/1.1 200 OK\r\nContent-type: text/xml; charset=UTF-8\r\n\r\n" . '<?xml version="1.0"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
-<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . utf8_encode('������') . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
+<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . utf8_encode($string) . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
';
$r = $s->parseResponse($f, false, 'phpvals');
$v = $r->value();
$v = $v['content'];
- $this->assertEquals("������", $v);
+ $this->assertEquals($string, $v);
+
$f = '<?xml version="1.0" encoding="utf-8"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
-<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . utf8_encode('������') . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
+<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . utf8_encode($string) . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
+';
+ $r = $s->parseResponse($f, false, 'phpvals');
+ $v = $r->value();
+ $v = $v['content'];
+ $this->assertEquals($string, $v);
+
+ $r = php_xmlrpc_decode_xml($f);
+ $v = $r->value();
+ $v = $v->structmem('content')->scalarval();
+ $this->assertEquals($string, $v);
+ }
+
+ public function testLatin1Response()
+ {
+ $string = chr(224) . chr(252) . chr(232);
+
+ $s = new xmlrpcmsg('dummy');
+ $f = "HTTP/1.1 200 OK\r\nContent-type: text/xml; charset=ISO-8859-1\r\n\r\n" . '<?xml version="1.0"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
+<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . $string . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
+';
+ $r = $s->parseResponse($f, false, 'phpvals');
+ $v = $r->value();
+ $v = $v['content'];
+ $this->assertEquals($string, $v);
+
+ $f = '<?xml version="1.0" encoding="iso-8859-1"?><methodResponse><params><param><value><struct><member><name>userid</name><value>311127</value></member>
+<member><name>dateCreated</name><value><dateTime.iso8601>20011126T09:17:52</dateTime.iso8601></value></member><member><name>content</name><value>' . $string . '</value></member><member><name>postid</name><value>7414222</value></member></struct></value></param></params></methodResponse>
';
$r = $s->parseResponse($f, false, 'phpvals');
$v = $r->value();
$v = $v['content'];
- $this->assertEquals("������", $v);
+ $this->assertEquals($string, $v);
+
+ $r = php_xmlrpc_decode_xml($f);
+ $v = $r->value();
+ $v = $v->structmem('content')->scalarval();
+ $this->assertEquals($string, $v);
}
public function testUTF8IntString()