Your problem ist that you pass a FileReader
and a reader always needs an encoding. Because you haven't supplied one it is using the system encoding. In this case, Windows crap CP1252 and your two byte char is turned into two chars one byte each.
Rather pass a FileInputStream
and let JAXB determine the proper encoding itself.