还是昨天的url传递中文问题,又出现新的问题 用java.net.URLEncoder.encode("中文")就不回出现这个问题了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过这两天各位高手对我的回答,我综上总结一下(加上我亲自的测试,呵呵)问题是这样的,t1.jsp t2.jsp 都将通过url传递一个name参数到t3.jspt1.jsp------------------------<%@ page contentType="text/html;charset=gb2312"%><a href="t2.jsp?name=汪浩">go</a>----------------------------t2.jsp---------------------------------<%@ page contentType="text/html;charset=gb2312"%><jsp:forward page="t2.jsp?name=汪浩"/>---------------------------------t3.jsp-------------------------------------<%@ page contentType="text/html;charset=gb2312"%><%String name=request.getParameter("name");out.print("name="+name);%>---------------------------------在t3.jsp显示的时候经常出现一些所谓的乱码,或者匪夷所思的文字经过大家的建议为了正常显示t3.jsp必须这么写------------------------------------------------------<%@ page contentType="text/html;charset=gb2312"%><%String name=request.getParameter("name");name = new String(name.getBytes("ISO8859-1"),"gb2312");out.print("name="+name);%>-----------------------------------------------------------这样从t1.jsp传递name到t3.jsp就会显示正常的中文不过t1.jsp做如下修改也能正常显示t1.jsp--------------------------------------------------------<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.net.*"%><%String url="t2.jsp?name="+URLEncoder.encode("汪浩");%><a href="<%=url%>">go</a>--------------------------------------------------------而为了让从t2.jsp传递的中文值参数到t3.jsp也能正常显示,必须做如下修改t2.jsp---------------------------------<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.net.*"%><%String url="t2.jsp?name="+URLEncoder.encode("汪浩");%><jsp:forward page="<%=url%>"/>---------------------------------这是通过大家总结出来的,不过至于为什么就不太清除了,也许是因为java是外国人发明的原因吧(tmd没办法) 我通常是用<form>把中文传过去.好象用xxx.jsp?abc=中文 就会有问题!!! 给2个函数,我用得很爽,不过不是在JSP里,可能你也会用得很爽,/** * 将经转换的字串还原 */ public static String unToTrueAsciiStr(String str){ byte[] bt = str.getBytes(); int i,l=0,length = bt.length,j=0; for(i = 0;i< length;i++){ if(bt[i] == 0){ l++; } } byte []bt2 = new byte[length -l]; for(i =0 ;i< length;i++){ if(bt[i] == 0){ i++; // if (i > length -1 || j > length -1) break; // MachinePeer.println("i:"+i+" j:"+j+" length:"+length); bt2[j] = bt[i]; }else{ bt2[j] = (byte)(bt[i]|0x80); } j++; } String tt = new String(bt2); return tt; } /** * 将中英文字串转换成纯英文字串 */ public static String toTrueAsciiStr(String str){ StringBuffer sb = new StringBuffer(); byte[] bt = str.getBytes(); for(int i =0 ;i< bt.length;i++){ if(bt[i]< 0){ //是汉字去高位1 sb.append((char)(bt[i]&0x7f)); }else{//是英文字符 补0作记录 sb.append((char)0); sb.append((char)bt[i]); } } return sb.toString(); } java中Date转化为Calendar问题,请大家帮忙看下咋回事 java自定义异常处理,高手来帮帮 java 面试32问 求助!高手请指教:一段关于java.io文本输入的程序,为何不能运行?急死我拉! List状态的问题 请帮忙看这个不同语句都能编译, 但.....却不能??? socket超时问题! 紧急求救!关于hibernate的问题!在线等待。。。 就要改版了!请在线诸位高手帮忙解决一个这个问题!一个小时内结贴! 关于字符串常量池问题 谁有jbuilder6.0的注册码,解决后,立即给分! dos下編譯方面的簡單問題
问题是这样的,t1.jsp t2.jsp 都将通过url传递一个name参数到t3.jsp
t1.jsp
------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<a href="t2.jsp?name=汪浩">go</a>
----------------------------t2.jsp
---------------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:forward page="t2.jsp?name=汪浩"/>
---------------------------------t3.jsp
-------------------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<%
String name=request.getParameter("name");
out.print("name="+name);
%>
---------------------------------
在t3.jsp显示的时候经常出现一些所谓的乱码,或者匪夷所思的文字
经过大家的建议为了正常显示
t3.jsp必须这么写
------------------------------------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<%
String name=request.getParameter("name");
name = new String(name.getBytes("ISO8859-1"),"gb2312");
out.print("name="+name);
%>
-----------------------------------------------------------
这样从t1.jsp传递name到t3.jsp就会显示正常的中文不过t1.jsp做如下修改也能正常显示
t1.jsp
--------------------------------------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.net.*"%>
<%String url="t2.jsp?name="+URLEncoder.encode("汪浩");%>
<a href="<%=url%>">go</a>
--------------------------------------------------------
而为了让从t2.jsp传递的中文值参数到t3.jsp也能正常显示,必须做如下修改t2.jsp
---------------------------------
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.net.*"%>
<%String url="t2.jsp?name="+URLEncoder.encode("汪浩");%>
<jsp:forward page="<%=url%>"/>
---------------------------------这是通过大家总结出来的,不过至于为什么就不太清除了,也许是因为java是外国人发明的原因吧(tmd没办法)
好象用xxx.jsp?abc=中文 就会有问题!!!
/**
* 将经转换的字串还原
*/
public static String unToTrueAsciiStr(String str){
byte[] bt = str.getBytes();
int i,l=0,length = bt.length,j=0;
for(i = 0;i< length;i++){
if(bt[i] == 0){
l++;
}
}
byte []bt2 = new byte[length -l];
for(i =0 ;i< length;i++){
if(bt[i] == 0){
i++;
// if (i > length -1 || j > length -1) break;
// MachinePeer.println("i:"+i+" j:"+j+" length:"+length);
bt2[j] = bt[i];
}else{
bt2[j] = (byte)(bt[i]|0x80);
}
j++;
}
String tt = new String(bt2);
return tt;
}
/**
* 将中英文字串转换成纯英文字串
*/
public static String toTrueAsciiStr(String str){
StringBuffer sb = new StringBuffer();
byte[] bt = str.getBytes();
for(int i =0 ;i< bt.length;i++){
if(bt[i]< 0){
//是汉字去高位1
sb.append((char)(bt[i]&0x7f));
}else{//是英文字符 补0作记录
sb.append((char)0);
sb.append((char)bt[i]);
}
}
return sb.toString();
}