URL编码很混乱
1.直接在网址栏输,网址路径中包含汉字,"www.xx.com/ff/问答",
"问答"将用的是utf-8编码.
2.直接在网址栏输,网址种的参数部分有汉字,"www.xx.com/ff/info.php?name=苏州",
"苏州"用的是操作系统的'默认编码'编码.据说可以在浏览器里设置这个编码.
3.在网页上点submit按钮,GET或者POST提交,按照网页编码格式编码,下面是U8编码
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
4.用AJAX提交,有的浏览器是U8,有的是取系统默认编码.
5.其他乱七八糟的....
解决办法
无任系统是什么,无任浏览器是什么,无任网页编码是什么
用Javascript的encodeURI()方法编码,就都变为unicode编码.
[encodeURI()的JS解码函数是decodeURI()]
客户端:两次JS
encodeURI(encodeURI($("#userName").val()));
服务端:一次解码
Java: String name = URLDecoder.decode(old,"UTF-8");
php: urldecode ("%E8%83%A1%E6%96%8C");
原理:
url只可以传ASCII码里的字符,其他字符过不了,先要变%XX才可以通过.
比如:"胡斌"要变"%E8%83%A1%E6%96%8C"[u8编码]才可以通过.
这里最最重要的是:E8-83-A1这U8编码的结构非常重要,因为你知道这是U8,
为了不破坏这个结构,再URL编码一下,变:
%25E8%2583%25A1%25E6%2596%258C
可以看到,只有"%"再次变"%25",E8-83-A1这个你知道的U8编码结构依然还在.
然后:%25E8%2583%25A1%25E6%2596%258C到了服务器,
服务器根据规定[通过的肯定是URL编码过的,然后检查有没有类似"%XX"的东西,
看见"%XX"此类的东西,服务器帮着还原了,注意'%'后仅仅是两个X]
%25E8%2583%25A1%25E6%2596%258C还原成%E8%83%A1%E6%96%8C,
就是说服务器以为你传的参数就是"%E8%83%A1%E6%96%8C",
但是你知道,"%E8%83%A1%E6%96%8C"确实是你要的参数,只不过你编码过了,
而且你也知道这个是U8编码结构,所以你再用U8反编一次就可以了.
你也可以这么记:
服务器这么"吃"数据,只能吃"一个字母"或者"%XX"这两种格式.其他吃不下.
相关推荐
前后台传值乱码问题万能思想,通用 只说思想不讲代码!很少 很容易,看懂就完全不会出现乱码了!
主要为大家详细介绍了java中文传值乱码问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
jsp页面传值中文乱码问题处理.docx
jsp传值中文乱码问题解决方法示例介绍.docx
asp.net页面通过URL参数传值中文乱码问题解决办法
asp.net中URL参数传值中文乱码的三种解决办法
在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,下面与大家分享下jsp传值乱码解决办法,有类似情况的朋友可以参考下哈,希望对大家有所帮助
在传值时会遇到中英文乱码 <filter-name>GBKEncoding <filter-class>com.sshnews.filter.GBKEncodingFilter</filter-class> <filter-name>GBKEncoding <url-pattern>/* </filter-mapping>
在本地使用jsp传值时,一切正常无乱码,当放到测试机上是发现有乱码现象,针对此问题本文给出详细的解决方案,感兴趣的朋友可以参考下哈
struts2配置文件传值中文乱码
解决ajax乱码和页面传值问题,很深入啊
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下
js向服务器端传递中文时乱码,搜索是可以通过这个解决乱码问题,包括传值乱码
这是一个JS把汉字转换编码格式避免乱码的类,相当于ASP或是.NET中的UrlEncode方法.使用方法是var str = UrlEncode("这里是你要转换的汉字");这个方法有个缺点,不支持全角标点,所以要配合下面的方法把全角转换半角才...
主要介绍了js传值后台中文出现乱码的解决方法,涉及javascript针对中文的编码及java解码操作相关技巧,需要的朋友可以参考下
本节讲的是ajax 的URL参数中有中文值,传到服务端,在用request.getParameter()方法,得到的常常会是乱码。
JSP中文问题解决办法,JSP页面传值,数据库等的中文乱码解决办法
Request.QueryString 获取的中文变乱码了,解决方法如下 1、html中,可以用js的 encodeURI() 方法将要传的中文处理,例如 encodeURI("I am 乱码") ,处理之后,字符串中的中文 “乱码” 两字将会被被十六进制的转义...
最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如下: public void doGet...