webService 使用CXF出现编码 GBK 的不可映射字符问题解决

使用CXF出现编码 GBK 的不可映射字符问题解决


webService 之间进行通信时,发送Document 控制台会出现乱码问题 webService 使用CXF出现编码 GBK 的不可映射字符问题解决_第1张图片

后来打包在Linux系统中就不会出现这个问题,而在Windows中就会出现,经过不断的查询资料发现

*在 Windows 系统的使用 CXF 动态客户端时可能会遇到 tomcat 启动后调用 wsdl 遇到 很多错误GBK编码,这个错误的原因是 由于项目 maven 配置使用 UTF-8 的,CXF 生成java 文件是使用的UTF-8 的编码,而使用javac 编译的时候 取的是系统默认的编码 由于中文 window 系统采用GBK 编码,所有就相当于使用javac -encoding gbk .java,所有就出 出现乱码

解决方法:
创建个实体类
JaxWsDynamicClientFactory extends DynamicClientFactory

 /**
     * 覆写父类的该方法
* 注:解决此(错误:编码GBK的不可映射字符)问题 * * @return */ @Override protected boolean compileJavaSrc(String classPath, List srcList, String dest) { org.apache.cxf.common.util.Compiler javaCompiler = new org.apache.cxf.common.util.Compiler(); // 设置编译编码格式(此处为新增代码) javaCompiler.setEncoding("UTF-8"); javaCompiler.setClassPath(classPath); javaCompiler.setOutputDir(dest); javaCompiler.setTarget("1.6"); return javaCompiler.compileFiles(srcList); }

然后引用自己创建的实体类就好了

你可能感兴趣的:(日常错误,webservice,gbk,乱码)