一、Include的頁(yè)面亂碼
現(xiàn)象:include進(jìn)來(lái)的頁(yè)面出現(xiàn)亂碼,其它頁(yè)面正常。
原因:Tomcat在缺省情況下使用ISO-8859-1編碼,但是在include時(shí)有時(shí)Tomcat不能正確根據(jù)外層.jsp文件的編碼解析include進(jìn)來(lái)的文件,造成include進(jìn)來(lái)的文件中的中文亂碼。
解決:這兒可以有很多解決辦法,但是對(duì)于我們的中文環(huán)境,從根本上的解決辦法是將Tomcat 5.0.19的核心缺省編碼從ISO-8859-1修改為GBK 。可以在下面地址下載修改過(guò)的jar文件,
右擊保存jasper-compiler.jar,jasper-runtime.jar位于/common/lib下,其它位于/server/lib下,將新的.jar文件替代原.jar即可。
二、提交的數(shù)據(jù)亂碼
現(xiàn)象:通過(guò)表單提交的數(shù)據(jù)出現(xiàn)亂碼。
原因:原因未明。可能是Tomcat在接收到請(qǐng)求后,并沒(méi)有能夠根據(jù)request中的信息提前正確的編碼方式。
解決:可以添加一個(gè)設(shè)置字符集的Filter。
- package filters;
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.UnavailableException;
- public class SetCharacterEncodingFilter implements Filter {
- protected String encoding = null;
- protected FilterConfig filterConfig = null;
- protected boolean ignore = true;
- public void destroy() {
- this.encoding = null;
- this.filterConfig = null;
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain)
- throws IOException, ServletException {
- // Conditionally select and set the character encoding to be used
- if (ignore || (request.getCharacterEncoding() == null)) {
- String encoding = selectEncoding(request);
- if (encoding != null)
- request.setCharacterEncoding(encoding);
- }
- // Pass control on to the next filter
- chain.doFilter(request, response);
- }
- public void init(FilterConfig filterConfig) throws ServletException {
- this.filterConfig = filterConfig;
- this.encoding = filterConfig.getInitParameter("encoding");
- String value = filterConfig.getInitParameter("ignore");
- if (value == null)
- this.ignore = true;
- else if (value.equalsIgnoreCase("true"))
- this.ignore = true;
- else if (value.equalsIgnoreCase("yes"))
- this.ignore = true;
- else
- this.ignore = false;
- }
- protected String selectEncoding(ServletRequest request) {
- return (this.encoding);
- }
- }
配置web.xml
[pre] <filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>[/pre]
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。