所以我在使用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将变成一个简单的字符串并按原样打印。

09-11 19:00