日期:2014-05-17  浏览次数:20803 次

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.浏览器发送数据: