对get请求执行encodeURI(param)编码,在提交
encodeURI是javascript函数

解决方案 »

  1.   

    因为外部程序非web程序  并且他们也不愿意转换编码  
    所以只能从这边下手
      

  2.   

    tomcat配置URIEncoding之后
    它会怎样处理参数?
      

  3.   

    new String("中文".getBytes("utf-8"), "gbk");
      

  4.   

    感觉楼上的反了吧,是GBK传到UTF-8 
    new String("中文".getBytes("GBK"), "UTF-8");
      

  5.   

    tomcat的处理没那么简单吧
     好像它先会把参数转为16进制的字节码
    然后再转换编码的吧
      

  6.   

    现在问题是   我怎样把传过来的中文参数还原
      如何处理那个参数?
    可以肯定
    new String(param.getBytes("utf-8"), "gbk");
    new String(param.getBytes("gbk"), "utf-8");
    这些都是不行的
      

  7.   

    没有错误  就是乱码问题
    因为URIEncoding配置为UTF-8
    而传过来的中文参数为GBK
    所以产生乱码
      

  8.   

    如果你的外部页面字符集gbk,你的URIEncoding为utf-8,我上面说的肯定是正确的。
    你再确定一下字符集,以及中间是否有filter已经做了处理。
      

  9.   

    是有外部程序 (非web程序)以http get方式访问我这边的系统
    它的url中含有 中文参数(GBK编码)
    new String("中文".getBytes("utf-8"), "gbk");
    这种方法是不能解决的
    因为tomcat会经过别的处理之后才会把参数转为UTF-8
    所以你直接由UTF-8>>GBK是转不回去的
      

  10.   

    外部程序get请求是否进行使用gbk进行url encode
      

  11.   

    使用spring mvc  过滤字符编码也只是对于post请求的吧 外部是非web程序   他们要做encode也比较麻烦
      

  12.   

    那么他们没有做encode,你传的参数是中文,没有进行url encode,你怎么确定使用的是gbk字符集呢?况且中文字符参数不encode是不符合http协议的,http协议规定,参数只能有ASCII字符的。
      

  13.   

    这个我确定  因为那边是做游戏客户端  他们统一使用GBK编码
    并且我把tomcat  server.xml里面的uriencoding配置为GBK后
    在我这边也可以正常取到参数中的中文值
      

  14.   

    可能是有地方做处理了?你写一个filter,让它最先执行,然后用 new String("中文".getBytes("utf-8"), "gbk");试试,如果还是乱码我就真的无解了。
      

  15.   

    楼主试试这个:new String(param.getBytes("iso-8859-1"), "utf-8");
      

  16.   

    页面也需要设置转码的:
    页面:(.jsp)
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    response.setContentType("text/html;charset=UTF-8");处理文件:(.java)
    转码的三种方法:
    A 接受参数时进行编码转换String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8"); 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。B 在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用
    String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时的enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。C 为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp进行编码处理。 百了一下