get提交时中文传值乱码的问题
url=curWarnList.action?paramBean.bsIndex=1¶mBean.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='/>"+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提交
相关推荐
关于java中使用表单get方法传值出现乱码问题的解答。详细简单,便于学习使用。
SpringMVC解决GET请求时中文乱码的问题.rar
JAVA过滤器filter request.setCharacterEncoding仅对POST提交起作用,对GET提交还是会出现乱码问题
tomcat get提交中文乱码解决方案,修改tomcat server.xml 中以下为
get方式传参中文乱码问题的解决方案
本资源参考网上原版为存取英文字符的ini操作,未考虑中文乱码问题。而网上另外也有资料如何处理中文编码,例如转码为utf-8,存能解决乱码,取又出现问题。本资源我重新整理,用unicode完美解决中文乱码问题。用法: ...
java解决解决get中文乱码问题,在项目中多次使用,从未有错!
https://blog.csdn.net/myWorld001/article/details/109261850
JSP中 ajax的get请求的中文乱码问题的解决方法.pdf 学习资料 复习资料 教学资源
get post提交表单中文乱码过滤器(java)
下面小编就为大家带来一篇页面get请求 中文参数方法乱码问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
IE 浏览器在get请求下中文乱码的问题
get请求乱码问题 java
JSP-GET-POST传递的乱码问题 中文参数传递乱码问题一直伴随着我们,整理的解决过程。
angulardemo_get传值示例代码.zip
过滤器实现get请求乱码问题 过滤器实现get请求乱码问题 过滤器实现get请求乱码问题
使用过滤器实现GET请求和POST请求的中文乱码问题,只需在自己的Web应用中的web.xml中配置该filter即可使用。
参看文档:http://blog.csdn.net/sinat_29398599/article/details/52880036
filter是javaWeb中一个十分重要的知识点,可以拦截webApp的所有请求。 使用场景: 1、可以利用filter做到网站自登录。...2、可以利用filter全局修改参数编码,从而解决中文乱码问题(十分重要)。
解决jsp提交乱码的问题 可以解决get post 的乱码问题