所以我遇到了一个问题,我正在使用JSP。
我将代码发送到HTML页面,页面将部分代码转换为“?”
我发送到HTML页面的代码:
"assertEquals('\uD83D\uDE30\', StringEscapeUtils.escapeCsv('\uD83D\uDE30\'));",
如何在html页面中显示:
assertEquals("?", StringEscapeUtils.escapeCsv("?"));
所以,我想保留代码,不要将其解析为“?” 谁知道怎么做?
答案 0 :(得分:0)
我假设您要打印字符串
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"不是。
在我看来 在打印时,打印机正在考虑将其作为unicode char并尝试对其进行解码,当它无法解码时,打印"?"。
当你添加额外的" \"时,\ uD83D变成一个简单的字符串并按原样打印。