我们使用哪个预计UTF-8的Web服务。我们使用客户端上的框架就是Apache Axis2的。我们调用Web服务和SOAP体包含UTF-8字符串。问题是,它似乎是身体“双重编码”。即我们有字符“a”。以UTF-8“A”的UTF-8表示为C 3 A5但是我们在我们的日志看到,所发送的(双)编码值是C3 83 C2 A5。

任何人都经历similiar问题?

有帮助吗?

解决方案

您是如何调用Web服务这并不完全清楚。是否在Web服务的方法只需要一个字符串?如果是这样,那么你的字符串看起来像在Java中? Java中的所有字符串是UTF-16编码 - 如果你转换UTF-8二进制表示为一个字符串,抓住每一个字节,并把它变成一个字符,那么这就是问题所在。

如果你能告诉你调用方法是什么样子,你是如何调用它,这将有很大的帮助。

有关它的价值,我用轴与非ASCII字符串,在过去没有问题。我强烈怀疑这是你如何使用它,而不是与轴本身有问题,但我愿意将错证明:)

编辑:基于您的评论,这听起来像你有问题,接收HTML表单数据,你打的Web服务之前。如果用户输入“a”的形式,那么这就是你应该看到什么,当你在Eclipse中进行调试。如果你把坏的数据进入你的网络服务,这也难怪,你要坏数据出来在另一端。我建议你运行是Wireshark 看到的究竟的是什么浏览器发送你的,无论是在条款原始字节,也什么内容编码它的规定。我的猜测是,您的Web服务器把它当作ISO-8859-1,但它实际上是UTF-8。

一旦你从形式得到了正确的字符串,我怀疑你会发现没有任何问题都在其传递到Web服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top