jsp传值中文乱码的有关问题



jsp传值中文乱码的有关问题。

我有个JSP页面,要把一个页面上的中文值传回到本页面接收,可接收到的值是乱码
A页面
设置
<%@ page language=”java” contentType=”text/html; charset=utf-8″ pageEncoding=”utf-8″%>

<form id=”form1″ method=”post” >
<td width=”6%” align=”center” valign=”middle”>销售区域</td>
<td width=”12%” align=”center” valign=”middle”><select name=”xsqy” >
<option value=”北京”>北京</option>
<option value=”四川”>四川</option>
<option value=”湖南”>湖南</option>
<option value=”西藏”>西藏</option>
</select> </td>
页面传值
out.println(“<a href=a.jsp?fy=”+(pageNow+1)+”&flag=1&xsqy=”+xsqy+”> 下一页</a>”);

 

A页面接收 设置
接收语句
xsqy=(String)request.getParameter(“xsqy”).trim();
if(xsqy.equals(null))
xsqy = “”;
else
xsqy = new String(xsqy.getBytes(“iso-8859-1″),”utf-8″);

可接收的值是乱码, 销售区域的值改成 英文可以正常接收,但要求必须传中文
Tomcat 也配置了 URIEncoding=”UTF-8″
也试了网上的好几种方法都是乱码,那位高手有解决办法,100奉上

——解决思路———————-
server.xml有两处URIEncoding=”UTF-8″,还有好像myeclipse的首选项里也有个要改成UTF-8的

——解决思路———————-
还有看你用的好像是servlet,servlet也要设置编码格式的
——解决思路———————-
url传中文只能是自己给自己找麻烦。你服务器可以设置,但是浏览器还能设置呢,所以就算你某个配置调对了,客户设置你能控制吗?浏览器的行为也不太一样。如果你项目的需求就是限定某浏览器会好些,但是最好别这么做,后患无穷。
——解决思路———————-
引用:
url传中文只能是自己给自己找麻烦。你服务器可以设置,但是浏览器还能设置呢,所以就算你某个配置调对了,客户设置你能控制吗?浏览器的行为也不太一样。如果你项目的需求就是限定某浏览器会好些,但是最好别这么做,后患无穷。

——解决思路———————-
可以走下后台然后传到页面就不会出现乱码 了!
——解决思路———————-
你可以把中文值编码下encodeURI(“中国”),然后用Java解码java.net.URLDecoder.decode(request.getParameter(“xsqy”),”utf-8″);
——解决思路———————-
两个页面的编码方式是否相同
参数可以javascripe转换后在传过去
——解决思路———————-
1、统一编码,比如页面、开发环境、容器、数据库等都使用同一编码
2、通过UrlEncode对URL进行编码传值试试
——解决思路———————-
前段时间遇到过这个问题是这样解决的
写个filter
public class EncodingFilter implements Filter {

 

private String encoding;

private FilterConfig filterConfig;

 

@Override

public void init(final FilterConfig filterconfig) throws ServletException {

filterConfig = filterconfig;

encoding = filterConfig.getInitParameter(“encoding”);

}

 

@Override

public void doFilter(final ServletRequest servletrequest, final ServletResponse servletresponse,

final FilterChain filterchain) throws IOException, ServletException {

servletrequest.setCharacterEncoding(encoding);


filterchain.doFilter(servletrequest, servletresponse);

}

 

@Override

public void destroy() {

//fait rien

}

 

}
——解决思路———————-
然后再web.xml里把这个配置到所有filter前面
<filter>

<filter-name>EncodingFilter</filter-name>

<filter-class>……….EncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

</filter>
——解决思路———————-
然后你的那句
new String(xsqy.getBytes(“iso-8859-1″),”utf-8″);应该改掉
——解决思路———————-
把这句话改下 xsqy = new String(xsqy.getBytes(“iso-8859-1″),”utf-8″);
改为xsqy = new String(xsqy.getBytes(“utf-8″),”GBK”);
试下

——解决思路———————-
哥们,你看看是不是这个问题,你的项目使用了打散重组的方式将字符编码修改为utf-8,tomcat服务器也是utf-8,是不是你使用的浏览器网页的编码(对准页面右键,在弹出的对话框中查看一下编码)被设置成了gbk或者gb2312,gbk是utf-8的一个子集,从gbk转向utf-8编码不会出现乱码,但是从utf-8到gbk就会乱码。最好是你当前的界面和跳转到的界面都查看一下。
——解决思路———————-
传值页的body里面设置
<%

request.setCharacterEncoding(“UTF-8″);

%>

我前几天也碰到了乱码,尝试了很多还是有问题,加上这个就好了,楼主试试。