問題:
出問題的系統是j2ee架構,JSP頁面採用的字符集是GBK,
在錄入一個生僻字"㛃"字後,查詢顯示在頁面時出現問題。
分析:
首先,這個生僻字不在GBK字符集,因爲eclipse編輯器無法save爲GBK格式。所以,在HTML裏面出現了Http Entity Code,㛃 (即生僻字"㛃"),瀏覽器自動通過unicode來解決。碰巧我們使用了c:out標籤,如果escapseXml=true,則會把&轉義爲&,所以html顯示㛃(實際代碼:㛃),所以加上escapseXml=false,則html顯示正常。最好的辦法還是建議在JSP頁面使用UTF-8字符來解決,將來也能更好的處理國際化的其他字符。
小插曲:
在Tomcat測試時沒有設置charset filter,tomcat會使用確認iso-8859-1來解析,老是亂碼。
web.xml中字符集的filter如下,順序需要放在最前面
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>