IBM Worklight - ошибка кодировки/кодирования в ответе данных от webservice

Я использую IBM lightlight для разработки гибридного приложения. В локальной среде разработки все в порядке.

У меня проблема при развертывании на внешний сервер (с базой данных oracle). Мое приложение вызывает веб-сервис через адаптер, но данные в ответе имеют проблему с кодировкой: символы Unicode отображаются неправильно. Я изменил charset (в функции вызова адаптера) на ISO-8859-1, а затем символы Unicode отображались правильно.

function invokeWebService(body, headers, soapAction) {
var input = {
    method : 'post',
    returnedContentType : 'xml',
    path : '/transaction/services/TransactionService.TransactionServiceHttpSoap11Endpoint/',
    body: {
        content : body.toString(),
        contentType : 'text/xml; charset=ISO-8859-1'
    }
};

//Adding custom HTTP headers if they were provided as parameter to the procedure call
//Always add header for SOAP action 
headers = headers || {};
if (soapAction != 'null')
    headers.SOAPAction = soapAction;
input['headers'] = headers;

return WL.Server.invokeHttp(input);
}

Однако проблема возникает снова, когда я хочу вставить данные в базу данных (оракул с кодировкой по умолчанию UTF-8). Данные были вставлены с кодировкой ошибок (поскольку ISO-8859-1).

Как я могу получить правильную кодировку данных с UTF-8 без необходимости менять кодировку из веб-службы?

Или получить данные с кодировкой ISO-8859-1 и вставить данные в базу данных с UTF-8?

0
источник поделиться
2 ответа

@Idan Adar Это решение для системного использования Liberty, но я использую tomcat. Я нашел решение для этого. Просто измените кодировку Tomcat по умолчанию:

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF8"

Измените Tomcat's Charset.defaultCharset в окнах

+1
источник

Это может быть связано с кодировкой того, о чем упомянул Эндрю, но поскольку вы говорите, что это работает на сервере разработки, но сбой на удаленном сервере, вы можете попробовать следующее.

Если удаленным сервером является WebSphere Liberty, найдите файл jvm.options и добавьте следующее:

-Dfile.encoding = UTF-8
-Duser.Language = ы
-Duser.country = US

Если на удаленном сервере WebSphere ND есть панель администратора, в которую вы можете установить кодировку. Проконсультируйтесь с документацией WebShere: http://www-01.ibm.com/support/knowledgecenter/SSEQTJ_8.5.5/com.ibm.websphere.nd.doc/ae/xrun_jvm.html

Конечно, также отмените любые изменения, которые вы делали ранее...

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос