现在的问题是服务端发给客户的SOAP包中的字符集的问题。不知是spring里的设置问题还是tomcat5里的设置的问题,请高手指教。本人在线等。谢谢了

解决方案 »

  1.   

    Java 平台对经修订的 UTF-8 已经很熟悉,但是,问题是应用程序开发人员在可能包含增补字符的文本和 UTF-8 之间进行转换时需要更加留神。需要特别注意的是,某些 J2SE 接口使用的编码与 UTF-8 相似但与其并不兼容。以前,此编码有时被称为“Java modified UTF-8”(经 Java 修订的 UTF-8) 或(错误地)直接称为“UTF-8”。对于 J2SE 5.0,其说明文档正在更新,此编码将统称为“modified UTF-8”(经修订的 UTF-8)。经修订的 UTF-8 和标准 UTF-8 之间之所以不兼容,其原因有两点。其一,经修订的 UTF-8 将字符 U+0000 表示为双字节序列 0xC0 0x80,而标准 UTF-8 使用单字节值 0x0。其二,经修订的 UTF-8 通过对其 UTF-16 表示法的两个代理代码单元单独进行编码表示增补字符 。每个代理代码单元由三个字节来表示,共有六个字节。而标准 UTF-8 使用单个四字节序列表示整个字符。Java 虚拟机及其附带的接口(如 Java 本机接口、多种工具接口或 Java 类文件)在 java.io.DataInput 和 DataOutput 接口和类中使用经修订的 UTF-8 实现或使用这些接口和类 ,并进行序列化。Java 本机接口提供与经修订的 UTF-8 之间进行转换的例程。而标准 UTF-8 由 String 类、java.io.InputStreamReader 和 OutputStreamWriter 类、java.nio.charset 设施 (facility) 以及许多其上层的 API 提供支持。由于经修订的 UTF-8 与标准的 UTF-8 不兼容,因此切勿同时使用这两种版本的编码。经修订的 UTF-8 只能与上述的 Java 接口配合使用。在任何其他情况下,尤其对于可能来自非基于 Java 平台的软件的或可能通过其编译的数据流,必须使用标准的 UTF-8。需要使用标准的 UTF-8 时,则不能使用 Java 本机接口例程与经修订的 UTF-8 进行转换。在应用程序内支持增补字符
    现在,对大多数读者来说最为重要的问题是:必须对应用程序进行哪些更改才能支持增补字符?答案取决于在应用程序中进行哪种类型的文本处理和使用哪些 Java 平台 API。对于仅以各种形式 char 序列([char[]、java.lang.CharSequence 实现、java.text.CharacterIterator 实现)处理文本和仅使用接受和退回序列(如 char 序列)的 Java API 的应用程序,可能根本不需要进行任何更改。Java 平台 API 的实现应该能够处理增补字符。对于本身解释单个字符、将单个字符传送给 Java 平台 API 或调用能够返回单个字符的方法的应用程序,则需要考虑这些字符的有效值。在很多情况下,往往不要求支持增补字符。例如,如果某应用程序搜索 char 序列中的 HTML 标记,并逐一检查每个 char,它会知道这些标记仅使用 Basic Latin 字符子集中的字符。如果所搜索的文本含有增补字符,则这些字符不会与标记字符混淆,因为 UTF-16 使用代码单元表示增补字符,而代码单元的值不会用于 BMP 字符。只有在某应用程序本身解释单个字符、将单个字符传送给 Java 平台 API 或调用能够返回单个字符的方法且这些字符可能为增补字符时,才必须更改该应用程序。在提供使用 char 序列的并行 API 时,最好转而使用此类 API。在其他情况下,有必要使用新的 API 在 char 和基于代码点的表示法之间进行转换,并调用基于代码点的 API。当然,如果您发现在 J2SE 5.0 中有更新、更方便的 API,使您能够支持增补字符并同时简化代码(如上 格式化范例 中所述),则没有必要这样做。您可能会犹豫,是将所有文本转换为代码点表示法(即 int[])然后在该表示法中处理,还是在大多数情况下仍采用 char 序列,仅在需要时转换为代码点,两者之间孰优孰劣很难确定。当然,总体来说,Java 平台 API 相对于 char 序列肯定具有一定的优势,而且采用 Java 平台 API 可以节省内存空间。对于需要与 UTF-8 之间进行转换的应用程序,还需要认真考虑是需要标准的 UTF-8 还是经修订的 UTF-8,并针对每种 UTF-8 采用适当的 Java 平台。“经修订的 UTF-8”部分介绍进行正确选择所需的信息。
      

  2.   

    结论
    对增补字符的支持已经引入 Java 平台,大部分应用程序无需更改代码即可处理这些字符。解释单个字符的应用程序可以在 Character 类和多种 CharSequence 子类中使用基于代码点的新 API。
      

  3.   

    我想了一下,建议你用 tomcat5。29 版本, jdk用 1。5 的!
      

  4.   

    问题可能在你的 xml 文件或者说你的  xml 写的不正确!查一查 xml 的问题
      

  5.   

    太谢谢Viano了。
    开发时的用的是tomcat5.028,不行后,就又试了5.030和5.59、jdk一直用的是1.5。可一直都有这个问题。看来问题确实出在Spring创建回复的soap包中。就是不知怎么办。