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

急求:用“xxx.jsp?xx=xxx”传汉字字符串,为什么有的汉字字符串能正确传,而有的汉字字符串最后一个字符变成了问号?谢谢!
我想用<a href="mvdelete.jsp?id=<%=rs.getString("变量名称")%>">删除</a>方法在mvdelete.jsp中删除rs.getString("变量名称")对应的项,但是用id传送到mvdelete.jsp文件当我用String variablename=request.getParameter("id");时,却出现“有的汉字字符串”可以准确的传过来,“有的汉字字符串”不能准确的传过来,不能准确传过来的现象表现为“有的汉字字符串的最后一个汉字变成了问号,其它地方的汉字都正确”,看起来不像是乱码问题,因为数据库中是完全正确的,就是在mvdelete.jsp中才出现有的汉字字符串的最后一个汉字变成了问号其它地方的汉字都正确的现象,看起来又不像是<a href="mvdelete.jsp?id=<%=rs.getString("变量名称")%>">删除</a>的错误,因为当我把鼠标放在“删除”按钮时,浏览器的左底下脚出现了完全正确的mvdelete.jsp?id=<%=rs.getString("变量名称")%>形式,即id=<%=rs.getString("变量名称")%>浏览器的左底下脚显示的赋值是正确的汉字字符串。我用的数据编码格式是utf8。而且一般书上也都是像我这么写的,就是传输的不是汉字字符串。
  注:我用过直接写字符串方式<a href="mvdelete.jsp?id=或者">删除</a>尝试,在mvdelete.jsp中得到的也是同样的结果:”或?“
  这个是什么问题呢?如何解决?一个语句对于有的汉字字符串正确却对有的不正确,也不知道为什么?十分感谢大家的帮助!

------解决方案--------------------
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
pageEncoding设为utf-8
然后在调用<%=rs.getString("变量名称")%>之前,先rs.setCharacterEncoding( "utf-8" );
------解决方案--------------------
Java code
String variablename=new String(request.getParameter("id").getBytes("ISO-8859-1"),"UTF-8");

------解决方案--------------------
lz可以看看是不是奇数汉字会乱码,而偶数不会
------解决方案--------------------
UTF-8有的中文他认不出来的就变?号了...

中文乱码问题:应该说所有的情况都碰到了吧,解决也是曲折的,经过摸索,总结如下: 

1、所有页面都用UTF-8。 
2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 
3、javascript脚本里用encodeURI(str)。 
4、适当的时候,在jsp里用java.net.URLDecoder.decode(request.getParameter("str"),"UTF-8")。 
5、最容易忽略的是使用"":value=" <%=paraFiles%>",一定要有引号。
6、new String(content.getBytes("ISO-8859-1"), "GBK");
------解决方案--------------------
<%=new String(request.getParameter("id").getBytes("ISO8859-1"),"UTF-8") %>
------解决方案--------------------
<%=new String(request.getParameter("id").getBytes("ISO8859-1"),"UTF-8") %>
LZ把代码贴出来。。。
------解决方案--------------------
<a href="mvdelete.jsp?id=<%=EncodeURI(rs.getString("变量名称"))%>">试试看是否管用
------解决方案--------------------
又是编码问题,
看来楼主还是用GBK或GB2312好了,用UTF-8有些问题
我也在问编码的问题
------解决方案--------------------
你可以试下偶数的汉字就不会乱,奇数就不行
因为转Unicode码时候解释发生错误,它所使用的是不定码长,所以当奇数汉字时会发生解析错误
在传之前Encoding一下吧,把所传汉字先变成编码再传,怎么传都不会乱码了
------解决方案--------------------
Java code
out.print(new String(variablename.getBytes("ISO-8859-1"), "GBK")); //显示了中文

------解决方案--------------------
Java code
String variablename=new String(request.getParameter("id").getBytes("ISO-8859-1"),"gb2312");

------解决方案--------------------
2楼的兄弟说的对
------解决方案--------------------
Java code
String str = URLEncoder.encode(str, "UTF8");