url中文参数乱码问题

1、问题:

  web项目里url的中文参数乱码

 

2、解决:

(1)前台:encodeURI(encodeURI(code))
(2)后台:URLDecoder.decode(new String(code.getBytes("iso-8859-1"),"utf-8"), "utf-8")

 

3、疑问:

  (1)为什么前台需要编码两次?

    因为request.getParameter(String)会进行一次URI的解码过程,调用内置的解码过程会导致乱码

    而编码两次可以保证内置的解码过程执行后的结果是编码一次的结果(如果直接是中文会导致无法显示而乱码)

  (2)后台为什么要首先以[iso-8859-1]读一次编码?

    tomcat7的默认编码是[iso-8859-1],tomcat8的默认编码是[utf-8]

    需要以[iso-8859-1]读取字节码,再以[utf-8]构造成子串,再使用[utf-8]解码一次,即可得到中文在程序里使用

 

4、扩展:

  其它方法:(没有试验)

  (1)根据tomcat的版本不同可以设置tomcat安装目录下的[conf/server.cml]文件的connector配置

  (2)在程序重写获取参数的方法

 

5、参考文章

          js/java 页面url传值中文编码&解码问题

  encodeURI(encodeURI(code))

  url出现中文乱码

 

转载于:https://www.cnblogs.com/hackxiyu/p/10337884.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值