如何解决POST和GET方式的中文乱码问题

对于post请求:

一:确保表单所在的页面按照指定的字符集打开

★在HTML页面中使用meta标记可以确保浏览器按照指定的字符集进行解码页面,
并限定表单提交时的数据编码方式

:在服务器端需要在调用getParameter()方法读取参数之前,告诉浏览器如
何解码,使用如下代码即可完成该设置:
:request.setCharacterEncoding("utf-8");
★注意该方法一定要要放在所有request.getParameter()方法之前。
★这种方式只针对POST请求有效。
二:也可以使用转码:String username = request.getParameter("username");

username = new String(username.getBytes("iso-8859-1"),"UTF-8");


对于get请求:

一:确保表单所在的页面按照指定的字符集打开
★在HTML页面中使用meta标记可以确保浏览器按照指定的字符集进行解码页面,
并限定表单提交时的数据编码方式

:完成ISO-8859-1到UTF-8格式的转换
String username = request.getParameter("username");
username = new String(username.getBytes("iso-8859-1"),"UTF-8");
★由于GET方式提交的任何数据在服务器端一定会以ISO-8859-1的方式进行解码,
所以服务器端可以先按ISO-8859-1的方式获取字节数组,在将该数组转变成

UTF-8对应的字符串形式


注意:对于get请求而言
★可以在Tomcat服务器的配置文件进行修改,这样就不用每次都对参数进行进制
转换。在这里需要修改Tomcat的conf目录下的server.xml配置文件。修改方法

是在port="8080"后面添加URI编码设置URIEncoding="utf-8"即可。如图所示:

如何解决POST和GET方式的中文乱码问题_第1张图片


但是如果用了这种方式,如果再对参数进行new String转换就会出错
★这种方式也是只争对get请求方式有效,对于post还是得需要用
:request.setCharacterEncoding("utf-8");或者new String转换。

你可能感兴趣的:(如何解决POST和GET方式的中文乱码问题)