博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
get提交时中文传值乱码的有关问题
阅读量:4626 次
发布时间:2019-06-09

本文共 2042 字,大约阅读时间需要 6 分钟。

get提交时中文传值乱码的问题

  get提交时中文传值乱码的问题

  url=curWarnList.action paramBean.bsIndex=1&paramBean.siteName=萧山A基站,href连接提交其实是get提交方式,会造成中文乱码。
这个主要是编码方式不统一。JSP(手动设置)、Java(字符串是unicode编码)、操作系统、、数据库()、Tomcat等等,各种不同环境介质都有不同的编码方式,如果编码方式不统一,就会造成乱码。

  url参数中文是以ISO8859-1的编码方式传递(url是通过web容器处理的,而tomcat默认的编码方式ISO8859-1),struts的编码方式是UTF-8,如果jsp页面,myeclipse、web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,直接传中文一般是不会乱码的,如果再有乱码。....

  对于POST方式,表单中的参数值对是通过request body发送给服务器,此时浏览器会根据网页的meta标签中的content="text/html; charset=UTF-8"中指定的编码进行对表单中的数据进行编码,然后发给服务器,在服务器端的程序中我们可以通过request.setCharacterEncoding("charset")方式(JSP代码) 设置编码,然后通过request.getParameter获得正确的数据。所以使用Post提交数据,编码方式就是我们可以控制的了。Post表单的Html一般写法如下:
<form action="test.jsp" method="post">
id:<input type="text" name="id"/>
name:<input type="text" name="name"/>
<input type="submit" value="发送"/>
</form>

  目前收集到4中方法,中文传参一documentPath为例:
1.改为form方式提交,不用超链接方式提交,用form方式传参指定不乱码。

  2.
使用Get方式提交数据,浏览器会对URL进行URL encode,然后发送给服务器,不同的浏览器可能会有不同的编码方式,因此发送之前需要使用JavaScript对参数进行统一编码,比较麻烦
通过encodeURI(encodeURI(checkText))提交,java代码中用URLDecoder.decode解码:
<script>
function download(documentPath){


var url = "<c:url value='/product/download.action documentPath='/$amp;>quot;$+documentPath;
url = encodeURI(encodeURI(url));
window.location.href=url;
}
</script>

  java代码中取中文:
String documentPath = (String) request.getParameter('documentPath');
documentPath = URLDecoder.decode(documentPath,"utf-8");

  3.修改tomcat的server.xml中的connector,添加URLEncoding="UTF-8"

  4.中文从java中传到jsp再通过url传到java:
java中编码:URLEncoder.encode(URLEncoder.encode("传递的中文","utf-8"));
java中解码码:URLDecoder.decode(request.getParameter('documentPath'),"utf-8");
或者
request.setCharacterEncoding("UTF-8"); //java代码中这样设置一下,将请求编码改为utf-8,但是只对post方式有效
String path= request.getParameter("documentPath"); 
String method = request.getMethod(); //获取提交方式 
if(method!=null && "GET".equals(method)){ //如果是get的方式的话 
path= new String(path.getBytes("ISO8859-1"), "UTF-8"); 
}

  5.配置过滤器,但配置过滤器也一般适用于post提交

转载于:https://www.cnblogs.com/jym-sunshine/p/4884974.html

你可能感兴趣的文章
BGA封装芯片手工焊接攻略
查看>>
抽象类和接口的联系与区别
查看>>
ie8的input的placeholder不显示的解决bug
查看>>
cmake, This may result in binaries being created in the wrong place
查看>>
用chrome的snippets片段功能创建页面js外挂程序,从控制台创建js小脚本
查看>>
inotify简介
查看>>
轻松获取LAMP,LNMP环境编译参数配置
查看>>
表达式引擎aviator
查看>>
Git,Github和Gitlab简介和使用方法
查看>>
每天一个linux命令(30): chown命令
查看>>
Python 的property的实现 .
查看>>
搭建Hadoop集群步骤
查看>>
提升jmeter自身性能
查看>>
wordpress调用树形目录
查看>>
数据结构与算法分析(C++版)(第二版)
查看>>
tomcat启动
查看>>
在python3环境安装builtwith模块
查看>>
c语言:婚礼上的谎言
查看>>
[bzoj2333] [SCOI2011]棘手的操作 (可并堆)
查看>>
MVC 4.0 Razor模板引擎 @Html.RenderPartial 与 @Html.RenderAction 区别
查看>>