各位老大,在下有一个急问的问题。
就是在SOAP协议下,当webservice的处理逻辑执行完成后,
需要把返回结构转换成XML格式通过http返回给client。
我想知道的是,所生成的XML的字符集是如何指定的。
通过设置指定,还是通过某些规则决定。
多谢大家了,百分相送,不够再加。

解决方案 »

  1.   

    Transformer.setOutputProperty(OutputKeys.ENCODING,"utf-8");
      

  2.   

    madFasso兄,这句话是在哪里执行的?
    client端还是server端?
    如果不指定的话,default值是什么?
      

  3.   

    http://taojingrui.javaeye.com/blog/404715
      

  4.   

    SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
    TransformerHandler th = sff.newTransformerHandler();
    Transformer transformer = th.getTransformer();
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");   XML编码
      

  5.   

    不好意思仍然没太明白。
    上面的代码,适用于在客户端指定字符集的吗?
    我现在最终的问题是SOAP引擎返回的XML的字符集是有什么决定的?
    这个能给详细的说明一下吗?
      

  6.   

    上面是返回XML时设定XML编码集
      

  7.   

    用axis开发web service服务接口,对方(客户端)希望soap返回的编码是utf-8的,可现在是gb2312的。找了半天api也没有发现设置encoding的方法。最后发现原来这个encoding不是程序设置的:SOAP 1.1 HTTP/SOAP 消息的媒体类型为“text/xml”,其编码处理是在 RFC2376 中定义的。而 SOAP 1.2 HTTP/SOAP 消息的媒体类型为“application/soap+xml”,其编码处理是在 RFC3023 中定义的。这些 RFC 规范定义了下列行为:SOAP 1.1: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果不指定 ContentType 字符集参数,字符集将被视为 US-ASCII。SOAP 1.2: HTTP/SOAP 请求的字符集由 HTTP 头中的 ContentType 字符集参数确定。在 SOAP 消息的 XML 声明部分定义的编码特性将被忽略。如果未指定 ContentType 的字符集参数,将使用在 XML 声明部分定义的编码特性。如果 ContentType 字符集参数或 XML 声明的编码特性均未定义,它将被视为 UTF-8。
    Content-Type: text/html;charset=GB2312
    Content-Type: text/xml; charset=utf-8
    只要对方把请求的编码格式改成utf-8就可以了
    http://fishyych.javaeye.com/blog/123610