我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > java项目ajax提交中文乱码的问题
总共48087条微博

动态微博

查看: 1331|回复: 1

java项目ajax提交中文乱码的问题

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-04-23 11:27:14 |只看该作者 |倒序浏览
    java项目ajax提交中文乱码的问题

    9 Z: m: y+ `' q9 U
    $ R7 x4 ^% }% e' U

      S4 B6 W- h" i: W( w6 y今天上午 做验证码的功能、碰巧是中文验证码、明明输入对了结果一直提示验证码错误、后台打印下 结果是乱码、检查了一下web.xml 也是配置了字符过滤器。7 ?" k$ Q8 `. x

    , q4 z8 c  z' U6 ]- A
    6 m6 w) y  S1 N& e* u$ w8 S
    由于其他地方 也是用了ajax 但是提交中文时没有问题的、对比一下结果发现  type 类型不一样、前者是post请求后者是get请求(乱码)。: i0 ], i9 \0 |) g  g- q+ o. ^

      c; Z- a: p$ x1 d; P1 q/ |0 R
    1 w1 v6 X  X" j4 g/ f# n" g
    百度了一下 get 和post请求的区别:
    / i3 S  L2 x, d! K对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题
    * c' C/ q9 P/ g8 j. T3 R- t" L  request.setCharacterEncoding("utf-8");) k" i* f; @! ]7 P. L6 {) u
    而对于Get请求,因为请求参数会被附加到地址栏的URL之后,所以不能用上面的处理方法。应该这样:1 k& k8 Y2 T' ~9 g5 q4 E% @
       String str=request.getQueryString();
      I$ T+ h: T; v, k8 ~% d. [4 ~   //使用URLDecoder解码字符串
    4 v, G! h# P0 y+ P( ?0 l   String str1=java.net.URLDecoder.decode(str,"utf-8");
    5 H) I, q4 B; J, K   String[] paraStrings=str1.split("&");; A! D* u3 v. T9 r) g0 F' r
       //paraStrings[0]就是第一个参数,依次类推...
    ) E  t4 V0 L# a& N& e) ?" Y/ V% F' E   for(String paraString : paraStrings)) Y$ ]0 o0 n1 f- r; B' E, i
    {- r$ }9 M% d9 k9 D3 E
         String[] nameValue=paraString.split("=");
    0 T% H/ O- ?. W' L6 {1 p     //nameValue[0]就是表单的name,nameValue[1]就是表单name对应的值( @, T6 B5 @: C8 u9 K; D2 B
    }
    ' F7 y1 `2 }) L$ e% z/ A还有一种方法就是获取请求参数之后对请求参数值重新编码,也就是先将其转换成字节数组,再将字节数组重新解码成字符串。
    + ]6 l; F  ]5 c8 i) S3 g1 h& W/ @  String str=request.getParameter("name");3 l2 p4 v$ b% y  o$ Z# K# ^1 ]) F
      byte[] bytes=str.getBytes("ISO-8859-1");3 ^4 |! m) o4 P( E  \' b
      String name=new String(bytes,"utf-8");
    2 J4 c; b% H( _( [6 ?) G# [7 v7 G% m3 J" D
    所以get即使走过滤器 解码方式也是不一样的  所以导致乱码 改为post请求就ok了。
    ' _1 i% L: i2 }5 s+ `: n+ u! y

    1 \- H6 g0 w( l3 R6 S

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    3

    主题

    1

    听众

    122

    金钱

    四袋长老

    该用户从未签到

    沙发
    发表于 2015-05-14 00:31:51 |只看该作者
    终于可以回复了
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表