解决表单提交时的乱码问题

为什么出现乱码

​ 在html页面中提交的数据会被封装在请求request对象中,返回到服务器时,服务器端会默认按照ISO8859-1的编码方式进行编码(ps:老外的软件默认编码是识别英文和数字的ISO8859-1,关于字符集可以我在另一篇文章里有专门提到),我们拿到的中文数据会是乱码的,这是我们针对不同的请求方式,有分别的解决方案

get请求

​ 表单提交的数据会显示在请求行中,也就是我们的浏览器搜索栏里(从?开始,数据以键值对的形式跟在后面,中间用&符号隔开),我们可以使用IE浏览器的开发者工具–>网络查看–>开始跟踪来查看本次请求的内容(IE老版本可能内有”网络”这一选项,建议使用高版本IE).在工具中我们可以看到我们请求的所有信息,包括(客户端请求协议,版本,远程地址,服务器端口号等内容),在我们的servlet伺服程序中可以针对get请求重写doGet()方法,这里,我们将数据按如下方式还原:

    byte[] buf = username.getBytes(“ISO8859-1”);按ISO8859-1编码
     String username = new String(buf,”UTF-8”);按UTF-8解码

这种方式是通用与get和post方式,get方式只能这样来解码和编码.

post请求

​ 如上可知,如果我们的数据过多,那么每一个用户数据都需要经过那两行代码进行转换,太过麻烦,所以我们的请求一般尽量按照post方式,因为post方式有很方便的方法解决乱码.代码如下:

    request.setCharacterEncoding(“UTF-8”);针对请求体内容按UTF-8编码
    request.getParameter(“username”)

因为对用post请求,是将提交的数据放在请求体中,不会暴露在搜索栏中,将请求体中的内容通过setCahrracterEncoding方法对数据按照指定字符集编码,这样就不会出现乱码.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值