你直接在浏览器中输入 test.jsp?msg=我是中文 , 试过没有?通常这种用get方法传递数据, 最好做URLEncoding, 能否处理中文可能会因浏览器而定, 而如果你的msg中有空格,?,或者&则一定不正确

解决方案 »

  1.   

    /**
         * 对字符串进行 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();
        }
      

  2.   

    这里面有两层编码, 上面的一层是中文编码, 下面是URLEncode.
    接收时反过来就好了.
      

  3.   

    接受时浏览器和Web服务器会自动给你解码,不用什么反过来的