0

我有一个发送 html 页面内容的PHP SOAP服务器(使用nuSOAP和 wsdl)。当然,HTML 可以用不同的编码进行编码,但是这个参数是XML 中的 base64Binary 类型,并且我以“本机编码”接收 HTML 没有问题。

为了证明,我在 PHP、C# 和 Java 6 中编写了三个 SOAP 客户端,前两个没有问题。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());

问题是在以 base64 编码发送 HTML 之前,只有 Java 客户端将 HTML 内容编码为 UTF8,当 PHP 接收到这个文件时,服务器像“UTF8 存档”一样管理它,而不是像“BIG5 文件”。

问题是,如何避免第一个UTF8编码?或者至少在base64之后进行utf-8编码,而不是更早。

提前致谢。

4

1 回答 1

1

看起来您需要/tmp/chinese.htm先将文件从 UTF-8(我认为这是 的编码)转换为 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 回答