2010-07-23 55 views
2

我有一个关于在Web服务中将XML作为字符串发送的问题。我们的一个提供商开发了我们应该使用的web服务。他们的web服务基本上是用于他们自己的请求/响应消息的传输机制,例如类MyRequest被序列化为一个XML字符串,使用JAXB传递给它的webservice中的setRequest方法,可能是因为它是对他们来说最简单的方法,或者是因为他们希望在他们的应用程序中具有高透明度......我不知道。不管怎样,这是我的问题。JAX-WS和字符编码问题

如果我有一个具有字符编码ISO_8859-1的web服务,但序列化的XML具有编码UTF-8的字符(或任何其他支持比ISO_8859-1更多字符的编码),它们是否会被正确序列化和反序列化?或者我将不得不发送有关字符串内容的信息?如果是这样,我该怎么做?

Web服务的服务器端是用.NET编写的。 Java和.NET之间的兼容性如何? .NET中是否存在Java中不支持的编码,反之亦然?

/安德烈亚斯

回答

0

如果他们正确地实现Web服务(和你也这样做),那么你并不需要担心字符编码,这是因为:

  1. (合式)XML具有内置的,允许被使用的字符编码的元数据被精确地发现和
  2. XML允许任何Unicode字符在任何编码来表示,由于numeric character references

所以总结一下:确保双方在支持Unicode的环境(C#和Java都可以)中处理它们的文本,并使用正确的XML库(两种环境都带有这些),并且一旦你不弄乱它手动,你应该没问题。

+0

Okey,因此如果webservice具有字符编码UTF_8859-1并且封装的序列化XML具有字符编码UTF-8,则所包含的字符串将被转义。那是对的吗?如果封装的序列化字符串被封装在CDATA部分中,我猜这将是有效的,因为它是字符数据,对吧? – 2010-07-26 11:57:17

+0

不是。其他XML中的XML实际上并没有自己的编码,因为它只是外部XML中的Unicode文本(因此它具有相同的编码)。在XML XML编码中不能表示的任何字符都将用数字字符引用表示。 – 2010-07-26 12:16:11