使用Out.print输出含<>的字符串时内容丢失,如何正常打印?
解决out.print输出含<>字符串内容被移除的问题
嘿,我太懂这个问题了!之前用Servlet的out.print()输出带尖括号的内容时,也纳闷怎么好好的内容突然没了😅。其实原因很简单:out.print()默认输出的是HTML格式的内容,浏览器会把<>包裹的部分当成HTML标签来解析,自然就不会显示出来了。
给你两种实用的解决办法:
方法一:手动替换为HTML实体
直接把尖括号转换成对应的HTML实体字符,浏览器就会把它们当成普通文本显示:
<替换成<>替换成>
举个代码例子:
// 原来的写法(内容会被浏览器解析为标签,不显示) out.print("<Hello, Nasrin!>"); // 修改后的写法(正常显示<Hello, Nasrin!>) out.print("<Hello, Nasrin!>");
方法二:用工具类自动转义
如果要转义的内容比较多,手动替换太麻烦,可以用现成的工具类来自动处理:
比如Apache Commons Text库中的StringEscapeUtils.escapeHtml4()方法,或者Servlet API里的HttpServletResponse.encodeHTML()(注意部分Servlet版本可能需要适配)。
自己写个简单的转义函数也很方便,比如:
public String escapeHtml(String input) { if (input == null) return null; return input.replace("<", "<") .replace(">", ">") .replace("&", "&") // 顺便转义&,避免实体字符被破坏 .replace("\"", """); } // 使用的时候: out.print(escapeHtml("<Hello, Nasrin!>"));
这样就能完整打印出你想要的带尖括号的内容啦!
内容的提问来源于stack exchange,提问作者Nasrin
相关产品推荐
相关产品推荐

