网址中文乱码解决方法——java的URLEncoder()跟URLDecoder()和js搭配java的encodeURI()跟URLDecoder()

网址中文乱码解决方法——java的URLEncoder()跟URLDecoder()和js搭配java的encodeURI()跟URLDecoder()

关于网址包含中文,传递却变成中文乱码。
在前端到服务器到后端阶段过程,如果存在中文需要传递,可以用网址来代替。
但是中文传递的过程中又会出现乱码,对此可以使用java的URLEncoder()和URLDecoder(),或者js搭配java的encodeURI()和URLDecoder()。

环境是在:Java+Tomcat+JavaScript

java使用方法如下:

//导入URLEncoder类和URLDecoder类
import java.net.URLEncoder;
import java.net.URLDecoder;

//同一网页,同程序下
String a="博客";
String luanma=URLEncoder.encode(a,"utf-8");
String zwa=URLDecoder.decode(luanma,"utf-8");

//不同网页,不同程序下
//因为将编码后的中文传递给服务器,再传递给后端时,
//服务器会将编码后的中文先解析一遍,传递到后端的时候又解析一遍
//所以需要对传递的中文编码两次!

String a="博客";
String luanma=URLEncoder.encode(URLEncoder.encode(a,"utf-8"),"utf-8");
//服务器解析,后端解析(总共两次)
String zwa=URLDecoder.decode(luanma,"utf-8");


看到java的编码和解码过程后,可以指定js和java的encodeURI()跟URLDecoder()也是一样的情况。如下:

***JavaScript***
<script>
//同样的需要经过服务器解码后再到后端解码,所以利用两次encodeURI()。
var a=encodeURI(encodeURI("博客"));
location = 'www.boke.com/boke.html?name='+a;
</script>

***Java***
import java.net.URLDecoder;

String name=URLDecoder.decode(request.getParameter("name"), "utf-8");

那么就会有人问了,那我编码一次,服务器解析一次,不就直接解析出中文了吗,我后端直接不解析不就行了?为什么要编码两次?

答案:你可以试试,在服务器到后端的过程中其实同前面一样,不能存在中文,否则就变成中文乱码,所以需要编码两次,以达到信息到达后端的时候可以通过解码直接得到中文信息。

有什么疑问可以在下方讨论区回复。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值