CXF,XMLStreamWriter和Encoding

时间:2012-07-07 00:15:52

标签: java xml spring spring-mvc cxf

我有一个spring web项目,现在应该用cxf和web服务实现。

一个功能是输出xml文件。我正在使用XMLStreamWriter执行此任务。一切正常。

但是当我将一些cxf依赖项添加到我的POM-File中时,输出xml文件将获得“IBM1252”编码。之后无法读取xml文件。例外:抛出“无效的编码名称IBM1252”。

我添加了以下依赖项:

    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-core</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
    </dependency>

我的代码中没有更改任何内容。我甚至试过这个:

    XMLStreamWriter writer = facOut.createXMLStreamWriter(fileWriter);
    writer.writeStartDocument("UTF-8", "1.0");

我仍然使用“IBM1252”编码。

有没有人知道它可能是什么原因?

1 个答案:

答案 0 :(得分:2)

不使用始终使用系统默认编码的FileWriter,而是使用OutputStreamWriter。

喜欢这样

   OutputStream os=null;
    Writer fileWriter = null;
    File f=new File("myfile");

try {
    os =new FileOutputStream(f);
    fileWriter =new OutputStreamWriter(os,"UTF-8");
} finally {
 // close writer, then outputstream if they are not null
}

...