关于Java Servlet的中文乱码

具体如下:

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^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值