java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧

java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧

ID:30779194

大小:89.25 KB

页数:7页

时间:2019-01-03

java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧_第1页
java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧_第2页
java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧_第3页
java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧_第4页
java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧_第5页
资源描述:

《java中文乱码解决之道(8):解决url中文乱码问题-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java中文乱码解决Z道(8):解决URL中文乱码问题-编程开发技术java中文乱码解决之道(8):解决URL中文乱码问题原文出处:chenssy我们主要通过两种形式捉交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。通过前面儿篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如果程序员要把每一种结杲都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编

2、码方法向服务器发岀请求?有!这里我主要提供以下儿种方法—、javascript使用javascript编码不给浏览器插手的机会,编码Z后再向服务器发送请求,然后在服务器屮解码。在掌握该方法的时候,我们需要料及javascript编码的三个方法:escape()、encodeURI()、encodeURIComponent()。escape采用SIOLatin字符集对指定的字符吊进行编码。所有非ASCII字符都会被编码%%xx格式的字符串,英屮xx表示该字符在字符集屮所对应的16进制数字。例如,格式对应

3、的编码为%20。它对应的解码方法为unescape()o事实上escape()不能直接用于URL编码,它的真止作用是返回一个字符的Unicode编码值。比如上面“我是cm”的结果为%u621l%u662Fcm,其中“我”对应的编码为6211,“是”的编码为662F,“cm”编码为cm。注意,escape()不对”+”编码。但是我们知道,网页在捉交表单的时候,如果有空格,则会被转化为+字符。服务器处理数据的时候,会把+号处理成空格。所以,使用的吋候要小心。encocleURI对整个URL进行编码,它采用

4、的是UTF-8格式输出编码后的字符串。不过encodeURl除了ASCII编码外对于一些特殊的字符也不会进行编码如@#$&*()=:/;?+encodeURIComponent()把URT字符串采用UTF-8编码格式转化成escape格式的字符串。相对于encodeURl,encodeURIComponent会更加强大,它会对那些在encodeURl()中不被编码的符号(;/?:@&二+$,#)统统会被编码。但是encodeURIComponent只会对URL的组成部分进行个别编码,而不用于对整个UR

5、L进行编码。对应解码函数方法decodeURIComponento当然我们一般都是使用encodeURl方來进彳亍编码操作。所谓的javascript两次编码后台两次解码就是使用该方法。javascript解决该问题有一次转码、两次转码两种解决方法。一次转码javascript转码:varurl=J/ShowMoblieQRCode.servlet?name=我是cm';window,location,href=encodeURl(url);转码

6、后的URL:http://127.0.0.1:8080/perbank/ShowMoblieQRCode.servlet?name=%E6%88%91%E6%98%AFcm后台处理:Stringname=request.getParameter(,zname,z);System,out.printin(,z前台传入参数:〃+name);name=newString(name.getBytes("ISO-8859T"),"UTF-8");System,out.printin(,z经过解码后参数:〃+na

7、me);输出结果:前台传入参数:经过解码后参数:我是cm二次转码javascriptvarurl二'〈s:propertyvalue二〃webPath"/>/ShowMob1icQRCodc.scrvlct?namc=我是cm';window.1ocation.href=encodeURl(encodeURl(url));转码后的url:http://127.0.0.1:8080/perbank/ShowMoblieQRCode.servlet?name=%25E6%2588%2591%25E6%25

8、98%25AFcm后台处理:Stringname=request・getParameter("name");System,out.printin(,z前台传入参数:"+name);name二URLDecoder.decode(name,〃UTF-8〃);System,out.println(z,经过解码后参数:〃+name);输出结杲:前台传入参数:E68891E698AFcm经过解码后参数:我是cm"Iter使用过滤器,过滤器LZ提供两种,第一•种设置

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。