java 在URL中传递参数乱码问题

 有次在项目中遇到在一个servlet从URL中传递一个参数(中文)到另一个servlet中,这时会出现URL乱码问题,经过查找资料及代码调试,最后终于找到了问题所在。先分享给大家

 

  第一个servlet

            String word = request.getParameter("word");
            if(Tools.isNotEmpty(word))
            {
              word=new String(word.getBytes("ISO-8859-1"), "utf-8");
            }

  另一个 servlet

    String word = request.getParameter("word");

  结果这个是word是乱码

 

解决方法一:

 我们注意到使用req.getParameter("key")得到参数后,还使用了new String(key.getBytes("ISO-8859-1", "utf-8"))把ISO-8859-1字符集形式转换成UTF-8形式。
为什么呢?因为iso-8859-1是Java中网络传输使用的标准字符集,req.getParameter("key")得到的还是ISO-8859-1字符集,所以要转换一下才不会是乱码。

解决方法二:

 在服务的server.xml 中增加以下配置:

  <!-- A HTTP/1.1 Connector on port 8080 -->
      <Connector protocol="HTTP/1.1" port="${jboss.web.http.port}" address="${jboss.bind.address}"
         redirectPort="${jboss.web.https.port}" />

修改为:

<Connector protocol="HTTP/1.1" port="${jboss.web.http.port}" address="${jboss.bind.address}"
         redirectPort="${jboss.web.https.port}" URIEncoding="UTF-8"/>

增加编码


--------JVM编码设置---------------------

1、JVM中缺省字符集
    或者在环境变量中配置JAVA_OPTS=%JAVA_OPT%;-Dfile.encoding=UTF-8 -Duser.language=zh_CN
    或者在Tomcat的启动脚本中配置JAVA_OPTS=%JAVA_OPT%;-Dfile.encoding=UTF-8 -Duser.language=zh_CN


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值