具体如下:
1.jsp里charset要为gb2312
contenttype="text/html;charset=gb2312"
2.serverlet类里要有
request.setcharacterencoding(gb2312);
3.字符集的重新格式化
java.net.urlencoderjava.net.urldecoder 对应的encode 与decode进行编码解码。
在传输数据时候浏览器会自动对要表单传输的数据进行url编码,所使用的编码方式取决于当前网页显示时候使用的编码方式。
对于http请求消息的url地址后的参数,getparameter等方法进行自动url解码时采用的编码方式取决servlet引擎;tomcat默认用iso8859-1进行解码。
重新格式化语句如下:
string str1 = new string(request.getparameter("name").getbytes("iso-8859-1"),"gb2312");
4.tomcat的conf文件夹里的server.xml中大约92行左右.(如果你没改过)
找到connector区块,加入如下一行:
uriencoding="gbk" 或 uriencoding="gb2312" 或 uriencoding="utf-8"
完整的应如下:
5.tomcat的conf文件夹下的web.xml文件的标签之间添加如下代码
encoding
gb2312
6.使用servlet规范中的过虑器指定编码
.新创建一个servlet时,interfaces接口:继承javax.servlet.filter
options中只需选中:create inherited methods; create constructors;
建好后在其dofilter()方法中:
arg0.setcharacterencoding("gb2312"); //实现请求乱码的处理
arg1.setcharacterencoding("gb2312"); //实现响应乱码的处理
arg2.dofilter(arg0,arg1); //继续执行其他过滤器 或 jsp、servlet
.再在web.xml中把过滤器servlet中的相关内容的改为
并修改中的/* ; “/*”表示执行任何文件
简介过滤器:
a.每个过滤器都会在 web.xml中有单独的配置:
过滤器的别名
过滤器的物理地址,带有完整的包路径的
过滤器的别名
过滤器访问的路径
b.当由于某种原因想要删除servlet类时,删除后在web.xml中还会保留删除的servlet类的记录,
所以必须手动在web.xml中删除一下已删除的servlet类的信息
过滤器的在web.xml中的典型配置和主要代码如下:
web.xml:
characterencodingfilter
net.vschool.web.characterencodingfilter
encoding
gbk
characterencodingfilter
/*
characterencodingfilter.java:
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 characterencodingfilter implements filter
{
protected string encoding = null;
public void init(filterconfig filterconfig) throws servletexception
{
this.encoding = filterconfig.getinitparameter("encoding");
}
public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception
{
request.setcharacterencoding(encoding);
response.setcontenttype("text/html;charset="+encoding);
chain.dofilter(request, response);
}
}
7.解决数据库的乱码
在jdbc.url中明确字符集 (不适用于sqlserver)
在连接数据库时:con=drivermanager.getconnection(url,"sa","");
url="jdbc:协议:子协议://ip:端口; 库 ? useunicode=true & characterencoding=gb2312";
如果还有一些问题可能影响到中文乱码,希望大家能够给予补充!
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/