У меня есть сервер PHP SOAP (использующий nuSOAP с wsdl), который отправляет содержимое html-страницы. Конечно, HTML может быть закодирован с помощью другой кодировки, но этот параметр имеет тип base64Binary в XML , и я без проблем получаю HTML в «нативной кодировке».
Чтобы доказать, я кодировал три клиента SOAP в: PHP, C # и Java 6 , и с первыми двумя у меня нет проблем. 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 получает этот файл, сервер управляет им как «Архив UTF8», а не "BIG5 file".
Вопрос в том, как избежать первой кодировки UTF8? или, по крайней мере, выполнить кодировку utf-8 после base64, а не раньше.
Заранее спасибо.