Передача строки UTF8 через Java в веб-сервис .NET - PullRequest
0 голосов
/ 29 июня 2009

для того, чтобы «кормить» веб-сервис .NET из Java, я передаю строки XML через прямое сокетное соединение с сервером.

все работает вундербар, пока я не включаю "странный" символы в моих строках XML. Ä или ß для примера.

Я перебрал сценарий и понял, что в php5 проблема решается utf8_encode(myXmlString). К сожалению

retString = new String (retString.getBytes(),"UTF-8");          

не получается.

Будем благодарны за любые подсказки.

спасибо заранее

      A

Ответы [ 2 ]

2 голосов
/ 29 июня 2009

Если ваш XML правильно закодирован, у вас не должно возникнуть проблем. Я думаю, что ваш XML не правильно начать с. Вместо того, чтобы работать над этим, я настоятельно рекомендую вам исправить все, чтобы производить и потреблять правильные значения.

В частности, ваш retString должен уже иметь правильные значения Юникода. Если этого не произойдет, вы столкнетесь с проблемами, что бы вы ни делали. Если имеет правильные значения, вы сможете просто преобразовать его в байты, используя кодировку UTF-8, и передать их в сокет - при условии, что XML объявляет себя в UTF- 8 для начала. (По умолчанию используется UTF-8, если вы не указали ничего другого, если только он не начинается с метки порядка байтов UTF-16.)

Предлагаю вам взглянуть на мою статью Устранение неполадок Unicode : проверяйте данные на каждом этапе, не просто распечатывая строку, а просматривая отдельные кодовые точки внутри нее. Сделайте это на стороне Java и .NET.

0 голосов
/ 29 июня 2009

Не забывайте, что у вас есть 2 уровня кодировки здесь:

  1. кодировка вашего XML-документа. Имеет ли это правильную кодировку (например, UTF-8). Можете ли вы записать его в файл перед отправкой на сервер и проверить, правильно ли он закодирован?
  2. кодирование строкового XML-документа по проводам. Опять же, вам нужно будет это проверить. Получаете ли вы строку и затем выполняете getBytes (String encoding) на ней? Для этого следует использовать указанную кодировку, а не устаревшую дефолтную реализацию
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...