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