所以我在使用JSP时遇到了一个问题。
我将代码发送到HTML页面,该页面将部分代码转换为“?”
我发送到HTML页面的代码:
"assertEquals('\uD83D\uDE30\', StringEscapeUtils.escapeCsv('\uD83D\uDE30\'));",
它在html页面中的显示方式:
assertEquals("?", StringEscapeUtils.escapeCsv("?"));
所以,我想保留代码,不将其解析为“?”
有人知道怎么做吗?
最佳答案
我想你应该想打印字符串
assertEquals('\uD83D\uDE30\', StringEscapeUtils.escapeCsv('\uD83D\uDE30\'));
就像在网页上一样。
下面的代码产生了您在问题中给出的错误输出
PrintWriter out = res.getWriter();
out.print("assertEquals('\uD83D\uDE30\', StringEscapeUtils.escapeCsv('\uD83D\uDE30\'));");
但是在上面的“\”中再加一个字符就可以打印出正确的输出
PrintWriter out = res.getWriter();
out.print("assertEquals('\\uD83D\\uDE30\\', StringEscapeUtils.escapeCsv('\\uD83D\\uDE30\\'));");
“\u”是unicode转义,而“\u”不是。
在我看来
打印时,打印机将uD83D视为unicode
char并尝试解码,如果无法解码,则打印“?”.
当您添加额外的“\”时,\uD83D将变成一个简单的字符串并按原样打印。