Как сказал rjsang, при использовании кодировки "UTF-8" есть ошибка, которая используется по умолчанию. Если вас не волнуют проблемы, чувствительные к регистру, попробуйте использовать «utf-8» и заставить свой пользовательский кодировщик работать так, как он должен. Также работает UTF-16, все что угодно, кроме «UTF-8»: «uTf-8» и т. Д.
Ужасная ошибка в стандарте.
Вот код для этого:
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "utf-8");