0

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 エンコーディングを行います。それ以前ではありません。

前もって感謝します。

4

1 に答える 1

1

最初にファイルを UTF-8 (のエンコーディングだと思います/tmp/chinese.htm) から BIG5 に変換する必要があるようです。

ファイルのコンテンツを変換するには、ファイルを読み取り、次のように再エンコードしますiconv

$path = '/tmp/chinese.htm';
$buffer = file_get_contents($path);
$buffer = iconv('UTF-8', 'BIG5', $buffer);

バッファー$bufferが UTF-8 から BIG5 に再エンコードされるようになりました。

于 2011-12-07T09:10:47.227 に答える