我是否有数据问题或字符串转义问题,如何解决?

时间:2014-02-08 23:06:54

标签: java string escaping double-quotes stringescapeutils

在我的Java Web应用程序中,我从数据库中提取属性,并通过控制器将其发送到视图/浏览器层。

在HTML中,我希望字符串看起来像这样:

9" nails

相反它看起来像这样:

"9\" nails"

所以我将Apache StringEscapeUtils插入我的服务层并在该属性上运行unescapeJava()。结果变成了这个:

"9" nails"

略有改善,但仍然不对。

所以我的问题是这不仅仅是一个String转义问题,而是一个更基本的数据问题。换句话说,如果要实现所需输出所要做的就是从该属性的开头和结尾删除双引号,有可能以意想不到的方式影响其他数据行 - 在这种情况下我将不得不目视检查整个数据库,以确保我没有根据其他字符串中双引号字符的含义错误地显示其他行。

这里的任何方向都将受到赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

在使用Java将数据发送到服务器之前,您可以在从API调用接收数据后替换字符串

String foo = "9\\\" nails";
foo = foo.replace("\\\"", "\"");

答案 1 :(得分:0)

看起来某个图层会在每个字符串的正面和背面添加引号。在不知情的情况下,我建议你做一个简单的str = str.substring(1, str.length() - 1)来删除添加的两个引号。我们无法告诉您它是否存在某些“基本数据问题”,因为我们没有看到任何其他问题。

如果您想要真正安全,可以使用indexOf("\"");lastIndexOf("\"");,看看它们是否分别为索引0和str.length() - 1,如果它们是:剥离它们。