- 浏览: 175918 次
- 性别:
- 来自: 广州
文章分类
最新评论
网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数。
参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值
以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去
Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的功能各不相同。
escape() 窍门:
采用ISO Latin字符集对指定的字符串停止编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此窍门编码的字符: @ * / +
encodeURI() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。
不会被此窍门编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。与encodeURI()相比,那个窍门将对更多的字符停止编码,比如 / 等字符。所以假如字符串里面包含了URI的几个部份的话,别用那个窍门来停止编码,否则 / 字符被编码之后URL将呈现错误。
不会被此窍门编码的字符:! * ( ) '
因此,对于汉文字符串来说,假如不期望把字符串编码各式转化成UTF-8各式的(比如原页面和目的页面的charset是一致的时候),只需求应用 escape。假如你的页面是GB2312或者更多有联系的编码,而接受参数parameter的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。js中编码有escape(),encodeURI(),encodeURIComponent()三个常用的方法,escape()常常用在提交页面和处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别在于encodeURIComponent()也对"?"等特殊字符进行编码。
一开始遇到中文参数的时候,使用encodeURI()进行了一遍编码,传过去后,发现解码出现问题,于是想到可能是编码方法使用错误,于是使用escape()方法,这时发现解码时抛出isHexDigit异常。借助百度搜索isHexDigit异常,
发现原来,是escape()方法造成了异常,同时了解了浏览器传递地址的一些原理,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,
然后由处理页面进行再次解码。由此我想到一直使用encodeURI方法是正确的,只是需要使用两次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文编码成%xy的格式,
第二次是对%xy中的%进行编码,%编码成%25。整个传参过程大体应该是:提交页面使用encodeURI(encodeURI("中文"))编码,把最后的编码结果%25xy传递给处理页面的过程中,浏览器获取URL地址
(注意openModelDialog方法,浏览器获取不到参数编码)后解码成%xy,然后把%xy传递给处理页面,处理页面使用URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码。
总结:
1、汉字出现在URL路径部分的时候不需要编码解码;
2、使用encodeURI进行2次编码;
3、在openModelDialog()打开的模式窗体里没办法用request.getParameter正确获取参数;
客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次encodeURI(encodeURI(“中文”))并在服务器中使用URLDecoder.decode(“中文”, "UTF-8");
今天用Ajax校验数据时也遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次encodeURI()编码方式,乱码问题就解决了。
页面
/exportExcel.topinfo?ls="+encodeURI(encodeURI(_tmplsgx))+"&zt="+encodeURI(encodeURI(_tmpzt))s
action中
String ls=request.getParameter("ls");
ls = new String(ls.getBytes("iso-8859-1"),"utf-8");
ls = java.net.URLDecoder.decode(ls,"UTF-8");
这样乱码就解决了。
参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值
以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去
Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的功能各不相同。
escape() 窍门:
采用ISO Latin字符集对指定的字符串停止编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此窍门编码的字符: @ * / +
encodeURI() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。
不会被此窍门编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。与encodeURI()相比,那个窍门将对更多的字符停止编码,比如 / 等字符。所以假如字符串里面包含了URI的几个部份的话,别用那个窍门来停止编码,否则 / 字符被编码之后URL将呈现错误。
不会被此窍门编码的字符:! * ( ) '
因此,对于汉文字符串来说,假如不期望把字符串编码各式转化成UTF-8各式的(比如原页面和目的页面的charset是一致的时候),只需求应用 escape。假如你的页面是GB2312或者更多有联系的编码,而接受参数parameter的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。js中编码有escape(),encodeURI(),encodeURIComponent()三个常用的方法,escape()常常用在提交页面和处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别在于encodeURIComponent()也对"?"等特殊字符进行编码。
一开始遇到中文参数的时候,使用encodeURI()进行了一遍编码,传过去后,发现解码出现问题,于是想到可能是编码方法使用错误,于是使用escape()方法,这时发现解码时抛出isHexDigit异常。借助百度搜索isHexDigit异常,
发现原来,是escape()方法造成了异常,同时了解了浏览器传递地址的一些原理,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,
然后由处理页面进行再次解码。由此我想到一直使用encodeURI方法是正确的,只是需要使用两次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文编码成%xy的格式,
第二次是对%xy中的%进行编码,%编码成%25。整个传参过程大体应该是:提交页面使用encodeURI(encodeURI("中文"))编码,把最后的编码结果%25xy传递给处理页面的过程中,浏览器获取URL地址
(注意openModelDialog方法,浏览器获取不到参数编码)后解码成%xy,然后把%xy传递给处理页面,处理页面使用URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码。
总结:
1、汉字出现在URL路径部分的时候不需要编码解码;
2、使用encodeURI进行2次编码;
3、在openModelDialog()打开的模式窗体里没办法用request.getParameter正确获取参数;
客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次encodeURI(encodeURI(“中文”))并在服务器中使用URLDecoder.decode(“中文”, "UTF-8");
今天用Ajax校验数据时也遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次encodeURI()编码方式,乱码问题就解决了。
页面
/exportExcel.topinfo?ls="+encodeURI(encodeURI(_tmplsgx))+"&zt="+encodeURI(encodeURI(_tmpzt))s
action中
String ls=request.getParameter("ls");
ls = new String(ls.getBytes("iso-8859-1"),"utf-8");
ls = java.net.URLDecoder.decode(ls,"UTF-8");
这样乱码就解决了。
发表评论
-
Eclipse中Hibernate Tools安装使用
2015-09-02 14:05 513eclipse->Help>Install Ne ... -
Excel保护破解
2015-08-12 15:56 677打开受保护的Excel表格,按“ALT”+“F11”键, ... -
在Web项目中配置Log4j
2014-02-19 21:29 8695在Web项目中配置Log4j 1. 动态的改 ... -
C3P0连接池详细配置
2014-02-19 21:17 696C3P0连接池详细配置 <c3p0-config ... -
转:js获取各种高度
2013-07-09 19:10 1001<script type="text/jav ... -
转:json的stringify方法作用
2013-07-04 00:14 1562可使用JSON.parse(str)将其转化为json对象 ... -
Sublime Text 2快捷键~
2013-06-30 23:19 947Ctrl+L 选择整行(按住-继续选择下行) Ctrl+ ... -
jquery表单验证-自定义及常用验证(转)
2013-04-04 23:14 1304<script type="text/java ... -
PL/SQL执行存储过程
2013-04-01 18:11 10241、PL/SQL中SQL窗口执行过程: BEGIN DBMS ... -
jboss、tomcat自定义classpath(转)
2013-04-01 14:16 3988现在的项目中自定义了很多共通的jar包,这些jar包如何导 ... -
EL表达式和JSTL标签(转)
2013-03-31 15:37 1274在JSP页面中,使用标签库代替传统的Java语言来实 ... -
EL表达式和JSTL标签(转)
2013-03-31 15:34 0在JSP页面中,使用标签 ... -
简单的导出excel
2013-03-25 16:29 941response.setContentType("a ... -
jquery autocomplete示例
2013-03-15 18:30 9675使用jquery的autocomplete插件~~,目前网上有 ... -
GreyBox官网~~
2013-03-01 17:36 940http://orangoo.com/labs/GreyBox ... -
(转)SQL 优化原则
2013-02-28 10:29 662一、问题的提出 在应用系统开发初期,由于开发数据库数据比 ... -
修改tomcat项目的图标
2013-02-28 10:23 789部署在tomcat中的项目在运行的时候,地址栏都是那个标志的小 ... -
如何修改和查看tomcat内存大小
2013-02-28 10:06 969为了解决tomcat在大进行 ... -
eclipse修改内存启动参数
2013-02-28 09:56 4964一般安装完eclipse之后,在安装目录下你应该可以看到有一个 ... -
Sybase数据bcp导出
2013-02-27 18:30 1313命令行操作Sybase以及数据bcp导出: C:\Docum ...
相关推荐
JavaScript获取Url中的参数(解决中文乱码) 可以点击更改URL按钮 修改url中的参数
操作方法(需要管理员权限): !!! 执行前,请务必备份注册表 1. 解压压缩包 2. 双击 .reg 注册表文件导入 更多内容可参考:...适合人群:需要修改 CMD 编码为 UTF-8 的人群
maven-javadoc-plugin 插件 解决中文乱码 和注解 时间问题, 包括eclipse.ini设置、pom.xml设置、maven build GBK设置、eclipse注释设置、eclipse注释模版(可导入)。
主要为大家分享了介绍了java中文乱码之解决URL中文乱码问题的方法,感兴趣的小伙伴们可以参考一下
asp.net中URL参数传值中文乱码的三种解决办法
php中url地址栏传参数中文乱码解决方法汇总
activiti-explorer5.2中文乱码解决方法
从A页面通过url传参到B页面时,获取URL中参数出现中文乱码问题,解析url参数的正确方法如下,感兴趣的朋友可以参考下
乱码 编码方式解决 gbk ISO8859-1 utf8 编码 乱码 编码方式解决 gbk ISO8859-1 utf8 编码
iso-8859-1转GBK,GBK转iso-8859-1,在二维码生成过程中如果没有用UTF8编码可以使用编码转换方式解决乱码问题
jsp使用URL编码传递中文参数乱码问题
URL汉字编码问题(及乱码解决)
教学视频--JSP中URL传递中文乱码问题的解决演示.rar
将cmd编码格式永久改为utf-8,解决部署以后tomcat乱码问题
java代码-使用java解决中文参数乱码问题的源代码 ——学习参考资料:仅用于个人学习使用!
过滤器代码--解决jsp中的字符乱码问题,可以让你不在为字符的乱码担心。
通常,我们电脑里的txt文件都是ASNI编码,当放到手机或MP3里时,打开看到的往往都是乱码,面目全非。我们需要先把它们转换为Unicode格式,才能够在手机和MP3上面正常打开。如果有大量的文件,逐一打开另存为Unicode...
选择文件夹,将指定文件里面的所有特定后缀的UTF-8编码文件转成GB2312文件,使用VS2013 ,MFC 开发.
解决思路:进行Base64前先进行URL编码,在进行URL编码的时候,注意设置不需要SpaceAsPlus选项。 javascript代码: let decodedData = window.atob(JSONStr); let decodedData1 = decodeURIComponent(decodedData)...
如果是在js中使用的超级连接,则要先把该超连接经过两次转换为十六进制的编码后再保存在一个变量中,即:var url=encodeURI("...");url=encodeURI(url);window.lo cation.href=url; (2).如果该超连接在页面中,可通过...