1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java url 传值乱码问题_解决URL传递中文时出现乱码问题(三种解决方法)

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

时间:2023-11-27 12:25:50

相关推荐

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

一、问题场景

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

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

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

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

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

..

二、问题重现

1.默认情况描述

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

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

图1-1

2.问题现象

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

图2-1

三、解决方法

方法一

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

结果如下图2-2所示

图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提供的对应的解码类(.URLDecoder)进行解码,同样解码两次,示例如下Stringname=request.getParameter("name");@b@name=URLDecoder.decode(URLDecoder.decode(name),"utf-8");//对应加密URLEncoder.encode(name,"utf-8");

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。