为什么不能通过sendRedirect来传递数据 你直接在浏览器中输入 test.jsp?msg=我是中文 , 试过没有?通常这种用get方法传递数据, 最好做URLEncoding, 能否处理中文可能会因浏览器而定, 而如果你的msg中有空格,?,或者&则一定不正确 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 对字符串进行 URL 编码<br> * 注意:目前仅适用于GBK编码 * @return 经过 URL 编码的字符串 * @param sIn 输入的字符串 * @throws UnsupportedEncodingException 可能引起的异常 */ public static String urlEncode(String sIn) throws java.io.UnsupportedEncodingException { //如果输入空串, 直接返回 if (sIn==null || sIn.length()==0){return sIn;} //将字符串转储到一个字节数组中 byte[] byteIn = sIn.getBytes("GBK"); //开始处理数据 ... StringBuffer buf=new StringBuffer(); int iU=byteIn.length ; String sChar ; int iChar; for (int i=0;i<iU;i++){ //获得一个字节 iChar = (int)byteIn[i]; //a-z, A-Z, 0-9, '.' '-' '*' '_' 保持不变, 空格变为 + , 其它则用 %xy 形式表示 if ( (iChar >= 0x30 && iChar <= 0x39) || //30 - '0', 39 - '9' (iChar >= 0x41 && iChar <= 0x5A) || //41 - 'A', 5A - 'Z' (iChar >= 0x61 && iChar <= 0x7A) || //61 - 'a', 7A - 'z' //2A:'*', 2E:'.', 2D:'-', 5F:'_' (iChar==0x2A)||(iChar==0x2E)||(iChar==0x2D)||(iChar==0x5F) ) { sChar=String.valueOf( (char)iChar ) ; } else if (iChar == 0x20) //0x20:空格 { sChar="+"; } else { //iChar小于0表示是一个大于127的ASCII码 if (iChar<0){iChar=iChar+256;} //获得对应的二进制表示 sChar = Integer.toHexString(iChar).toUpperCase() ; //sChar小于两位说明是诸如 Tab, 回车等控制字符 if (sChar.length()<2) {sChar="0"+sChar;} //前面加上 % sChar = "%" + sChar ; } buf.append(sChar ); } return buf.toString(); } 这里面有两层编码, 上面的一层是中文编码, 下面是URLEncode.接收时反过来就好了. 接受时浏览器和Web服务器会自动给你解码,不用什么反过来的 java控制tomcat,监控线程 各位大侠们给看看 Struts标签 html:radio 标签 在线等 请问jsp能把浏览器的关闭键屏蔽掉吗? 在线等 JavaWebStudio 2005新感觉 java类中如何定制时间 紧急啊!这样的Servlet网页爬虫多线程怎么写?我现在只能一个一个的根据URL去抓去! 怎样用java 来实现 执行unix上的命令? 哪位同盟可以我一份jsp+mysql的消息发布程序,高分赠送! 使用strtus2竟然连helloworld程序都运行不通了 JSP的错误! 我有个TIF的问题,问了很久都没有人解决,请各位高手帮忙!帮忙!(楼主有空帮忙一下吗?)
* 对字符串进行 URL 编码<br>
* 注意:目前仅适用于GBK编码
* @return 经过 URL 编码的字符串
* @param sIn 输入的字符串
* @throws UnsupportedEncodingException 可能引起的异常
*/
public static String urlEncode(String sIn) throws java.io.UnsupportedEncodingException {
//如果输入空串, 直接返回
if (sIn==null || sIn.length()==0){return sIn;}
//将字符串转储到一个字节数组中
byte[] byteIn = sIn.getBytes("GBK");
//开始处理数据 ...
StringBuffer buf=new StringBuffer();
int iU=byteIn.length ;
String sChar ; int iChar;
for (int i=0;i<iU;i++){
//获得一个字节
iChar = (int)byteIn[i];
//a-z, A-Z, 0-9, '.' '-' '*' '_' 保持不变, 空格变为 + , 其它则用 %xy 形式表示
if ( (iChar >= 0x30 && iChar <= 0x39) || //30 - '0', 39 - '9'
(iChar >= 0x41 && iChar <= 0x5A) || //41 - 'A', 5A - 'Z'
(iChar >= 0x61 && iChar <= 0x7A) || //61 - 'a', 7A - 'z'
//2A:'*', 2E:'.', 2D:'-', 5F:'_'
(iChar==0x2A)||(iChar==0x2E)||(iChar==0x2D)||(iChar==0x5F) )
{
sChar=String.valueOf( (char)iChar ) ;
}
else if (iChar == 0x20) //0x20:空格
{
sChar="+";
}
else
{
//iChar小于0表示是一个大于127的ASCII码
if (iChar<0){iChar=iChar+256;}
//获得对应的二进制表示
sChar = Integer.toHexString(iChar).toUpperCase() ;
//sChar小于两位说明是诸如 Tab, 回车等控制字符
if (sChar.length()<2) {sChar="0"+sChar;}
//前面加上 %
sChar = "%" + sChar ;
}
buf.append(sChar );
}
return buf.toString();
}
接收时反过来就好了.