我有一个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”编码.
有谁知道它可能是什么原因?
解决方法:
而不是使用始终使用系统默认编码的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
}
….