【问题标题】:CXF, XMLStreamWriter and EncodingCXF、XMLStreamWriter 和编码
【发布时间】:2012-07-07 10:39:18
【问题描述】:

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

一个功能是输出一个xml文件。我正在使用 XMLStreamWriter 来完成这项任务。一切正常。

但是当我将一些 cxf 依赖项添加到我的 POM 文件中时,输出 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”编码。

有人知道这可能是什么原因吗?

【问题讨论】:

标签: java xml spring spring-mvc cxf


【解决方案1】:

不要使用始终使用系统默认编码的 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
}

....

【讨论】:

  • 不客气。始终小心使用 FileReader/FileWriter - 最好使用 OutputStreamWriter、InputStreamReader 来完全控制字符集。
猜你喜欢
  • 2011-02-25
  • 1970-01-01
  • 2012-08-23
  • 2011-06-04
  • 2015-06-22
  • 2015-12-22
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多