编组到System.out时出现JAXB编码问题

时间:2013-08-07 18:51:53

标签: java encoding utf-8 jaxb

我正在尝试打印来控制我的java bean,从HTTP响应中解组。我有编码问题。 以下是回复的一部分:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Response>
   <ErrorMsg>Ä°ÅŸleminizi ...</ErrorMsg>
</Response>

我的方法是:

public void printToConsole() {
    try {
        JAXBContext context = JAXBContext.newInstance(Response.class);
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                Boolean.TRUE);
        marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
        marshaller.marshal(this, System.out);
    } catch (JAXBException e) {
        e.printStackTrace();
    }
}

通过使用调试器查看bean值,它们在调试器的弹出窗口(Eclipse IDE)中正确显示

由于

1 个答案:

答案 0 :(得分:4)

问题是通过使用默认控制台设置,它将无法正确打印UTF-8字符。确保用于显示输出的控制台也以UTF-8编码。例如,在Eclipse中,您需要转到

  

运行配置&gt;常见&gt;编码

并选择UTF-8或相关编码。

enter image description here