因为浏览器默认使用的时UTF-8编码,而servlet则是使用ISO-8859-1编码,所以在报文传输过程中就容易出现中文乱码问题,下面是两个比较常用的请求方式的乱码解决方式。
get请求:
中文被URL解码(utf-8)后通过HTTP协议由浏览器传输到服务器,然后到了web浏览器(tomcat)后进行URL解码(通过ISO-8859-1),因为编码字符集不一样,所以产生乱码情况。
解决办法:通过中间编码进行处理,如将ISO-8859-1转化为字节形式,然后再将字节转化为UTF-8。
post请求乱码
post报文是通过字符输入流来获取数据,而输入流默认编码为ISO-8859-1,所以在我们通过post方式获取数据时,数据编码格式是ISO-8859-1,这就会导致通过表单提交保存到数据库的数据里面如果有中文就会出现乱码问题
解决办法:在接收数据前先调用请求数据(request)的serCharacterEncoding(“UTF-8”)方法(request.serCharacterEncoding(“UTF-8”))