У меня есть клиент Perl, который вызывает службу http restlet (метод put). Некоторые параметры в этом вызове содержат японский текст. Когда я напечатал содержимое этих параметров запроса в сервисе restlet, я обнаружил, что эти символы искажены!
Это мой код клиента PERL:
my %request_headers = (
'DocumentName' => $document_name, --> This name is a JAPANESE String
'DocumentDescription' => 'Test Japanese Chars',
'content-length' => 200,
'Content-Type' => 'application/octet-stream; charset=utf-8',
'User-Agent' => "JPCharTester",
);
$s->write_request('PUT', '/test-document/TEST/TEST_DOCUMENT' , %request_headers, $content);
в этом вызове оба значения $ context и $ document_name являются JAPANESE Strings. Но ТОЛЬКО document_name получено в искаженном виде в моем бэкэнд-сервисе.
Вот код услуги:
String URL_ENCODING = "UTF-8";
String documentName = requestHeaders.getFirstValue("DocumentName");
System.out.println("Encoded Document Name : "+documentName+" <<<"); --> documentName is garbled here
try {
documentName = URLDecoder.decode(documentName, URL_ENCODING);
System.out.println(>>> Decoded Document Name : "+documentName+" <<<"); --> documentName is garbled here
} catch (java.io.UnsupportedEncodingException ex) {
throwException(ex.getMessage(), Status.SERVER_ERROR_INTERNAL, ex);
}
напечатаны оба вышеприведенных оператора журнала Захваченный текст !!
Может кто-нибудь сказать мне, какую ошибку я делаю и как это исправить?
Заранее спасибо за помощь.
С уважением,
Сатиш.