Java - 转义序列丢失了

时间:2012-12-23 15:07:11

标签: java soap escaping

我在Java中遇到转义序列的问题。 我正在调用一个Web服务,它接受一些String参数和一个byte []参数,并返回byte []。 当我收到那个byte []时,我将其写入文件并用一些文本打开该文件 像Open Office这样的编辑。 一切看起来都很好,但我的\ n和\ t用空格(“”)代替。 之前使用过这个网络服务的人说,如果我用\ 
替换我的\ n和\ t,它会起作用,但它仍然不起作用。

我尝试了几乎所有我在谷歌上找到的东西来解决这个问题,但仍然无法修复它。 我仍然认为Web服务很好,这取决于我将发送什么而不是我的换行符和制表符,但我不知道是否有任何其他字符组合将正确替换我的\ n和\ t。 / p>

我在这里提出正确的问题非常困难,因为我无法看到Web服务的实现。 也许我发送的SOAP消息进行了一些转换? 或者还有其他类似的东西:

String replaceString = myString.replace("\\n", "
");

或者我做错了?

编辑:

解决方案应如下所示:

https://github.com/NetAngels/django-webodt/issues/10

但即使这样仍然没有帮助我。

提前致谢。

更新: 我发送一个空的openOffice .odf file (byte[]),少数包含已登录用户的用户名等的字符串,以及一个包含我在表单上的文本字段中的所有用户输入的HashMap。在该文本字段中,用户经常输入换行符或制表符,并且当通过Web服务合并所有内容时,换行符和制表符将替换为空格。 Web服务运行良好,我可以完全访问它。从web服务方法返回的是byte [],表示填充的.odt文件。

2 个答案:

答案 0 :(得分:0)

我发现真正的问题在于网络服务。 Web服务上的XML编写器总是在逃避&, <, >等字符。而不是获取序列&#10;&#13;我得到序列&amp;#10;女巫不是换行符字符。当我打开我的.odt文件时会显示这些字符,因为这是&amp;,但是当我用原始&#10;手动替换它们时,它们现在会显示并显示换行符。

我尝试将此&#10;置于CDATA标记中,但事件CDATA的大括号<>使用&lt;&gt;进行转义因此,即使是CDATA在这种情况下,没有正确解释。

答案 1 :(得分:0)

\\n是错误的。您应该使用\n。 因为第一个是角色'\',后跟n,第二个是角色 '\ n'是换行