喂!
我试图在 Windows 中创建网络服务。
客户端是Delphi 6,调用MSXML2.XMLHTTP,另一端是PHP。
首先我测试:我可以接收匈牙利 XML 吗?
PHP 源代码是 UTF-8 编码文件 (PSPAD)。
$s = 'alma árvíztűrő tükörfúrógép beta';
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$m = $doc->createElement('package');
$doc->appendChild($m);
$n = $doc->createElement('Msg');
$m->appendChild($n);
$n->nodeValue = $s;
$xs = $doc->saveXML();
header('Content-Type: text/xml');
echo($xs);
这个包我完全在Delphi方面得到的,口音还可以。
因此,我尝试从 xml 注入数据(将 xml 发布到带有重音符号的 php)。
global $HTTP_RAW_POST_DATA;
$xmlstr = $HTTP_RAW_POST_DATA;
$xml = new SimpleXMLElement($xmlstr);
$msg = $xml->msg;
#$msg = 'ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP';
好的,我得到了“msg”字段,但是我尝试转换它,每次我得到一些转换通知,结果与我直接设置变量时的结果不同......
调试是:
echo(utfCharToNumber($sinput).'<br>');
echo(utfCharToNumber($sdefined).'<br>');
Input: 195[ ]8286195141908419717682197[ ]328419
Defined: 195[129]8286195141908419717682197[144]328419
Input: 5156751951508270195154821951477119513780<br>
Defined: 5156751951508270195154821951477119513780<br>
如您所见,当我从 MSXML2 转换输入时,变量中有两个孔。
我真的不明白这个。
从输入 XML 中获取数据时,我无法重现与直接在 PHP 代码中设置时相同的 XML 输出...
为什么?
感谢您的每一个帮助、想法、链接、文档、小例子!
dd