java url 传值乱码问题_解决URL传递中文时出现乱码问题(三种解决方法)

一、问题场景

一般在使用下面几种使用场景情况下,传递参数为中文时,接收得到的值都有可能乱码,具体如下:

1.直接在浏览器使用url地址访问

2.页面提交form表单时,method设置为GET

3.使用ajax获取数据时,mehtod设置为GET

4.在程序中使用jvm提供URL资源定位实现方式(java.net.URL)

..

二、问题重现

1.默认情况描述

Tomcat服务器(默认“8080”端口),URL参数地址编码默认为ISO-8859-1(相当于“URIEncoding="ISO-8859-1")

post.jsp接收请求响应页面,且内容显示编码设置为“utf-8”(如下面图1-1)

fd96a05bda8cf92411437a07dad5d94a.png

图1-1

2.问题现象

通过浏览器地址访问,乱码重现,如下图2-1所示:

076797382146c17c078e36a3d32d875d.png

图2-1

三、解决方法

方法一

修改Tomcat根目录conf路径下server.xml配置文件 - 添加URLEncoding="UTF-8"(对应上面图1-1设置文件编码格式)项,具体如下:

结果如下图2-2所示

77683811649fb56f1ac06a9847c0e143.png

图2-2

方法二

修改接受文件post.jsp代码,将使用Tomcat默认URLEncoding为“ISO-8859-1”再转回对应的“UTF-8”(根据上图1-1中文件本身设置的对应的编码格式修改)

结果中文也能恢复正常显示了

方法三

在发送中文参数编码前现在javascript中用encodeURI将被十六进制的转义序列(如结果为"%e5%80%aa%e4%bf%8a"),需要转换两次,如下代码示例所示encodeURI(encodeURI("倪俊"));//对应解密decodeURI("%e5%80%aa%e4%bf%8a");

对于的后台jvm提供的对应的解码类(java.net.URLDecoder)进行解码,同样解码两次,示例如下String name=request.getParameter("name");@b@ name=URLDecoder.decode(URLDecoder.decode(name),"utf-8");//对应加密URLEncoder.encode(name, "utf-8");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值