我正在開發一個使用Java EE和Spring的網站,需要輸出中文UTF-8字符。我有一個servlet執行request.getRequestDispatcher(...)。轉發(請求,響應)到一個jsp處理後。在這個servlet,做前鋒之前,我有中文UTF-8字符在Weblogic 10.3中顯示不正確,但不是Tomcat 6
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
在JSP文件的頂部(在我的項目中的每個JSP文件),我有:
<%@page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>
作爲一個測試,我在該jsp頁面上有一箇中文UTF-8字符硬編碼。當我將這個應用程序部署到Tomcat 6並點擊servlet時,瀏覽器檢測到頁面是UTF-8並輸出中文字符:採 當我將它部署到Weblogic 10並擊中servlet時,瀏覽器檢測到頁面是UTF- 8但顯示:
在我的weblogic啓動腳本中,我嘗試了-Dfile.encoding的不同java選項,例如UTF-8和utf8,但中文字符不管設置如何都是亂碼。
在weblogic.xml我有這樣的:
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>
<jsp-descriptor>
<encoding>UTF-8</encoding>
</jsp-descriptor>
在web.xml中我有這樣的:
filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
但這些都沒有解決的問題。
我所有的源文件都是UTF-8編碼的。
而且,當我有一個.JSP或與它中國字符的.html頁面,並直接訪問它,而不是通過在WebLogic中的servlet轉發給它的,中國的字符顯示正常。在我的servlet中,我甚至不執行向jsp的轉發,而是直接將中文字符寫入響應(使用response.getWriter()。write()),但中文字符仍然是不正確(即使瀏覽器正確地確定編碼是UTF-8)。
爲什麼它在Tomcat 6中工作,但不是Weblogic 10?我如何讓角色顯示?
JSP編譯器(JSP源代碼編碼)也可能是一個因素。嘗試使用u編碼的字符,如'\ uF91F'(蘭)。如果該字符顯示正常,那麼JSP源文件不會以UTF-8格式顯示。 (雖然不太可能) –