页面输出出现乱码: 1. <%@ page contentType="text/html; charset=gb2312"%> 2.<%@ page language="java" pageEncoding="gb2312"%> 二者的区别:ContentType属性指定了MIME(MIME表示多用途Internet邮件扩允协议,有效的类型有:text,image, audio,video,applications,multipart和message)类型和JSP页面回应时的字符编码方式;ContentType的charset是指服务器发送给客户端时的内容编码,pageEncoding是jsp文件本身的编码。 表单提交中文时出现乱码: 1.一般解决办法 submit.jsp文件表单中有<input type="text" name="name">文本标签其值为中文时,提交到process.jsp后用<%=request.getParameter("name")%>句话输出出现乱码,这是由于服务器端默认的编码是iso-8859-1而我们一般页面设置是gbk所以要将文本编码转换成gbk的,最好用<%=new String(request.getParameter("name").getBytes("iso-8859-1"),"gbk")%>这句话,一定正确(在页面头加上<%@ page contentType="text/html; charset=gb2312"%>或<%@ page language="java" pageEncoding="gb2312"%>),由于服务器和ie编码的设置不同其他方法都不是通用的。 2.过滤器解决法 FilterToChinese.java 文件内容: package com.accp.myfilter; 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; public class FilterToChinese implements Filter{ public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("GB18030"); chain.doFilter(request,response); } public void init(FilterConfig config) throws ServletException { } } web.xml 文件内容: <filter> <filter-name>chinese</filter-name> <filter-class>FilterToChinese</filter-class> </filter> <filter-mapping> <filter-name>chinese</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 过滤器只能过滤以POST方式提交的中文乱码,而GET方式却无能为力了,GET方式数据经过URL地址栏! 那么在到地址栏的时候,编码方式又被转成了ISO8859_1,所以出现乱码,用new String(request.getParameter("name").getBytes("iso-8859-1"),"gbk")处理从URL地址上获取来的数据。 只要涉及中文的地方全部是乱码,解决办法:在数据库的数据库URL中加上useUnicode=true&characterEncoding=GBK 。
相关资源:敏捷开发V1.0.pptx