请求xml中的UTF-8编码在linux中的soap请求
问题描述:
我正面临一个奇怪的问题。我有一个soap服务来存储用户数据,因为我正在调用一个服务并传递一个XML文档。问题是,当我从Windows试试,XML
正确使用所有有效UTF-8
字符请求xml中的UTF-8编码在linux中的soap请求
显示,但我的服务器是Linux服务器,它尝试时,从对象生成的XML具有特殊的一些垃圾/垃圾字符UTF-8
个字符。
我使用JAXB
进行XML转换。
下面是它工作得很好,我从Object使用字符串
String result = null;
JAXBContext jaxbContext = ContextFactoryManager.getInstance().createJAXBContext(SomeObject.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, JAXBUtils.JAXB_FORMATTED_OUTPUT);jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, JAXBUtils.JAXB_FRAGMENT);
jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, JAXBUtils.UTF8);
StringWriter writer = new StringWriter();
jaxbMarshaller.marshal(inputObject, writer);
result = writer.toString();
当我从本地服务器(从Windows)运行这段代码的代码,但是当这种代码在服务器上运行(在Linux ),它会将特殊字符(如ö)转换为某些垃圾字符。
请让我知道什么是错的?
答
好吧,
终于找到原因了。这与操作系统无关。在服务器上,配置了一个tomcat级别Valve
。该阀正在读取请求参数(从CatalinaRequest
)。
我发现字符编码前必须设置为得到任何参数。