2014-03-29 28 views
1
**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)); 
    %> 

同樣在JSP中其告訴我完美的輸出工作在Java類StringEscapeUtils Unicode字符轉換不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)); 
} 

。我需要的。但是當你在JAVA類中使用相同的代碼時,它會返回相同的字符串。

回答

1

StringEscapeUtils.unescapeJava()與HTML實體無關,如&#2340;。你需要StringEscapeUtils.unescapeHtml()來避開它們。

在JSP的情況下,這些實體通過瀏覽器呈現爲字符,但是在由JSP生成的HTML源代碼中,它們仍然會被轉義,因爲StringEscapeUtils.unescapeJava()在兩種情況下的工作方式都是相同的。

+0

問題解決。這是commons-lang 3.3.1中的問題。當我使用commons-lang 2.6。它的工作很好。 – Bhavesh