参数:苏JF6772含中文,是GET请求,后台接收时乱码,通过在tomcat中加一个配置就OK啦:
问题本质是get方式传递的参数内容默认编码方式问ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也无法解决问题。
方法一就是修改tomcat服务器的配置文件server.xml
方法二前台用代码转String usernameString = new String(username.getBytes("ISO-8859-1"),"UTF-8");
以上属于request乱码问题,request请求分为post和get,对于不同的请求方式有不同的解决乱码的方案
至于POST请求,用request.setCharacterEncoding("utf-8"),request.setCharacterEncoding()只对post请求有效
下面说说response乱码:
response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;
response.setCharacterEncoding("UTF-8");目的是用于response.getWriter()输出的字符流的乱码问题。如果是response.getOutputStream()是不需要此种解决方案的,因为这句话的意思是为了将response对象中的数据以UTF-8解码后的字节流发向浏览器;
再补充:
浏览器调用jsp,html等页面中文显示乱码
此情况需满足两个要求:
1.文件本身是以utf-8编辑保存的(myEclipse中在properties中鼠标右键选择utf-8)
2.浏览器用utf-8解析:
(手动)-->在浏览器中右键选择编码格式为utf-8
(智能)-->在文件中写入如: <meta name="content-type" content="text/html; charset=UTF-8"> 通过<meta>标签模拟response头,起到告诉浏览器用utf-8的编码解析
(智能)-->response.setContentType("text/html;charset=UTF-8");起到告诉浏览器用utf-8的编码解析
常用:
<meta name="content-type" content="text/html; charset=UTF-8">或<meta charset="utf-8">
<%@ pageEncoding="utf-8"%>
<?xml encoding="UTF-8"?>