Java Web后台通过request.getParameter( )方法得到的字符串显示为乱码
公司的软件,前台用的是C#,通过post方法,如下
http.open("POST",p_sUrl,false,"","");
http.send(p_bStr);
将数据发送到后台(用Java Web编写),后台通过request.getParameter( )方法获取前台传过来的相应的字符串,如果是字母的话,可以正确获取,但是,如果是中文,获取的字符串是乱码。
后台在request.getParameter( )方法之前已经有了request.setCharacterEncoding("utf-8")。
------解决方案--------------------假设接受到的是String value= request.getParameter("XXXX");
之后用String str = new String(value.getBytes("iso8859-1"),"utf-8");
str就是前台传过来的值。
我也不知道这种方法啊行,试试吧
------解决方案--------------------在提交JSP时对于乱码问题,首先我们要搞清楚为什么会出现乱码?
看JSP的头文件:<%@ page contentType="text/html;charset=UTF-8" language="java"%>
在这个头文件中,还有一个与编码的相关的属性:pageEncoding
-----------------------------------------------------
首先,说说JSP/Servlet中的几个编码的作用。
在JSP/Servlet中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF-8")和 response.setCharacterEncoding("UTF-8"),其中前两个只能用于JSP中,而后两个可以用于JSP和Servlet 中。
-----------------------------------------------------
request.setCharacterEncoding("UTF-8")的作用是在服务器端设置客户端请求进行重新编码的编码。
该方法用来指定对浏览器发送来的数据进行重新编码(或者称为解码)时,使用的编码。
response.setCharacterEncoding("UTF-8")的作用是指定在客户端对服务器响应进行重新编码的编码。
服务器在将数据发送到浏览器前,对数据进行重新编码时,使用的就是该编码。
-----------------------------------------------------
一、浏览器是怎么样对接收和发送的数据进行编码的
1.浏览器接受数据:
response.setCharacterEncoding("UTF- 8")的作用是指定对服务器响应进行重新编码的编码。同时,浏览器也是根据这个参数来对其接收到的数据进行重新编码(或者称为解码)。所以在无论你在 JSP中设置response.setCharacterEncoding("UTF-8")或者 response.setCharacterEncoding("GBK"),浏览器均能正确显示中文。
读者可以做个实验,在JSP中设置response.setCharacterEncoding("UTF-8"),在IE中显示该页面时,在IE的菜单中选择"查看(V)"à"编码(D)"中可以查看到是" Unicode(UTF-8)",而在在JSP中设置response.setCharacterEncoding("GBK"),在IE中显示该页面 时,在IE的菜单中选择"查看(V)"à"编码(D)"中可以查看到是"简体中文(GB2312)"。
2.浏览器发送数据: