ホイ!
WindowsでWebサービスを作成しようとしています。
クライアントはDelphi6で、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からの入力を変換したときに、変数に2つの穴があります。
私は本当にこれを理解していません。
PHPコードで直接設定した場合と同じXML出力を入力XMLからデータを取得して再現することはできません...
なんで?
すべてのヘルプ、アイデア、リンク、ドキュメント、小さな例をありがとう!
dd