**jsp code**

<%

    String str="&#2340;&#2369;&#2350;&#2381;&#2361;&#2366;&#2352;&#2366; &#2344;&#2366;&#2350; &#2325;&#2381;&#2351;&#2366; &#2361;&#2376;?";

     out.println("StringEscapeUtils.unescapeJava(sJava):\n" + StringEscapeUtils.unescapeJava(str));
    %>


在Java类中相同

public static void main(String[] args) {

String str="&#2340;&#2369;&#2350;&#2381;&#2361;&#2366;&#2352;&#2366; &#2344;&#2366;&#2350; &#2325;&#2381;&#2351;&#2366; &#2361;&#2376;?";

 System.out.println("StringEscapeUtils.unescapeJava(sJava):\n" + StringEscapeUtils.unescapeJava(str));
}


在jsp中,它向我展示了完美的输出。我需要的。但是当您在JAVA Class.com中使用相同的代码时,它将返回相同的字符串。

最佳答案

StringEscapeUtils.unescapeJava()与HTML实体(例如&#2340;)无关。您需要StringEscapeUtils.unescapeHtml()使其转义。

对于JSP,这些实体由您的浏览器呈现为字符,但是在由JSP生成的HTML源中,它们仍然被转义,因为StringEscapeUtils.unescapeJava()在两种情况下的工作方式相同。

10-06 02:16