StringEscapeUtils会转义除换行符(\ n)之外的所有内容

时间:2019-09-03 07:18:47

标签: java spring-boot stringescapeutils

我尝试使用Apache Commons库(v。1.7)中的StringEscapeUtils对大文本进行转义和不转义,该文本将在数据库(在本例中为H2数据库)中存储和检索。除换行外,几乎所有特殊字符均已成功转义和取消转义。我正在将Spring Boot(v2.1.3。)与thymeleaf一起使用。

例如,如果我尝试存储以下文本:

 He didn't say, "Stop!"

 This is a new line!

它将文本存储为:

  

He didn't say, \"Stop!\"\r\n\r\nThis is a new line!

哪个好。但是,当我使用unescapeJava方法对其进行转义时,换行符无法正常工作。我得到

  

He didn't say, "Stop!" This is a new line!

编辑:

当文本显示在html textarea中时,unescapeJava方法起作用。但是当将其呈现为纯html时,换行符不起作用。

2 个答案:

答案 0 :(得分:2)

  

当文本显示在html textarea中时,unescapeJava方法起作用。但是当将其呈现为纯html时,换行符不起作用。

请检查您的HTML源代码,很可能是

在HTML中,如果您希望将换行符替换为<br/>标签,则源代码中的换行符不会在屏幕上引入换行符。

查看更多信息:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br

答案 1 :(得分:0)

@Martin van Wingerden所说的是正确的。源代码中的换行符不会在屏幕上引入/渲染它。我找到了这个线程

Render a string in HTML and preserve spaces and linebreaks

这说明您可以使用CSS空格:预包装,可在格式化时保留空格和换行符。