HTMLページのコンテンツを送信するPHP SOAPサーバー( wsdlでnuSOAPを使用)があります。もちろん、HTML はさまざまなエンコーディングでコーディングできますが、このパラメータはXML では base64Binary 型であり、問題なく「ネイティブ エンコーディング」で HTML を受け取ります。
証明するために、私は3 つの SOAP クライアントを PHP、C#、および Java 6 でコーディングしましたが、最初の 2 つは問題ありません。Java クライアントはWSIMPORT 2.1を使用して作成され、コードの例は次のようになります。
FileInputStream file = new FileInputStream (new File ("/tmp/chinese.htm"));
BufferedReader buffer = new BufferedReader (new InputStreamReader (file
,"BIG5"));
String line;
String content = "";
while ((line = buffer.readLine()) != null)
content += line+"\n";
FileManagerAPI upload = new FileManagerAPI();
FileManagerAPIPortType servUpload = upload.getFileManagerAPIPort();
BigInteger result = servUpload.apiControllerServiceUploadHTML (
"http://www.test.tmp/因此鳥哥建議您務.html", content.getBytes());
問題は、HTML を base64 エンコーディングで送信する前に、Java クライアントのみが HTML コンテンツを UTF8 にエンコードし、PHP がこのファイルを受信すると、サーバーはそれを「BIG5 ファイル」ではなく「UTF8 アーカイブ」のように管理することです。
問題は、最初の UTF8 エンコーディングを回避する方法です。または、少なくとも base64 の後に utf-8 エンコーディングを行います。それ以前ではありません。
前もって感謝します。