【问题标题】:UTF-8 encoding in request xml for soap request in linux请求xml中的UTF-8编码用于linux中的soap请求
【发布时间】:2014-10-10 11:58:46
【问题描述】:

我遇到了一个奇怪的问题。我有一个肥皂服务来存储用户数据,因为我正在调用一个服务并传递一个 XML 文档。问题是,当我从 Windows 尝试时,XML 正确显示了所有有效的UTF-8 字符

但我的服务器是 linux 服务器,当它尝试时,从对象生成的 XML 包含一些垃圾/垃圾字符,用于特殊的 UTF-8 字符。

我使用JAXB 进行XML 转换。

这是我使用的从 Object 到 String 的代码

    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)上运行时,它会将特殊字符(如 ö)转换为一些垃圾字符。

请告诉我有什么问题?

【问题讨论】:

    标签: java xml linux soap jaxb


    【解决方案1】:

    好的,

    终于找到原因了。它与操作系统无关。在服务器上,配置了一个 tomcat 级别 Valve。这个阀门正在读取一个请求参数(来自CatalinaRequest)。

    当这个 URL 被关注时,https://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/org/apache/catalina/connector/Request.html#setCharacterEncoding%28java.lang.String%29

    我发现在获取任何参数之前必须设置字符编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 2017-04-24
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      相关资源
      最近更新 更多