javaWEB乱码根源于解决方法

javaWEB乱码根源于解决方法

一、Servlet中response乱码原因
1. 因为response默认使用ISO-8859-1编码,当我们的servlet在输出过程出现中文。response默认使用ISO-8859-1将中文进行编码,而中文在ISO-8859-1对应的编码没法找到那么会返回是”????”进行输出,所以我们在servlet输入前要指定response的编码 response.setCharacterEncoding(“UTF-8”);\
2. 上面解决了response的默认编码问题,而有时候输入的中文在浏览器也会出现乱码,出现乱码的原因是本人浏览器设置的编码是gbk2312。当我把浏览器的编码改成UTF-8乱码的问题就不见。而实际开发中我们不可能让用户修改浏览器编码解决乱码。所以有程序代码控制网页的编码,代码控制浏览编码方式:指定response的响应contenttype代码如下response.setContentType(“text/html;charset=UTF-8”)或者
在jsp头增加<meta http-equiv=”content-Type” content=”text/html; charset=UTF-8”>

二、Servlet中request乱码原因
1.当浏览器向servlet请求参数中出现中文,浏览在请求之前会将中文按浏览器的编码方式进行编码(例如:浏览器默认编码是UTF-8,那么会将请求参数的中文按UTF-8编码。例如传递的参数是“小明”编码后是[12,13])。因为servlet默认按ISO-8859-8解码,当接收浏览器传送过来的的编码[12,13]。[12,13]在ISO-8859-8对应的码表中没有找对应的值就出现“???”的乱码。解决的办法是指定request的编码:request.setCharacterEncoding(“UTF-8”);
2.以上指定request的编码只针对发起POST的请求有效,对于GET请求request.setCharacterEncoding(“UTF-8”);是没有效果,所以只能在程序中手动进行解码,解码代码如下:String userName= new String(name.getBytes(“ISO-8859-1”),”UTF-8”);(这里指定我的浏览器编码是UTF-8的情况)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值