文档章节

java javascript 的编码

黄平俊
 黄平俊
发布于 2010/03/30 11:05
字数 992
阅读 475
收藏 0

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或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在 javascript1.0版本就有。


三种编解码方式 js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函 数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截 断。                           

例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7& u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a& gt;');</script>

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度& ct=21");

3、   js使用数据时可以使用escape[Huoho.Com编辑]

例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下 escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需 要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,', (,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z



========================================================



unescape 方法

从用 escape 方法编码的 String 对象中返回已解码的字符串。

function unescape(charString : String) : String



    参数

charString

必选。要解码的 String 对象或文本。

备注

unescape 方法返回一个包含 charstring 内容的字符串值。所有以 %xx 十六进制形式编码的字符都用 ASCII 字符集当中等效的字符代替。以 %uxxxx 格式(Unicode 字符)编码的字符用十六进制编码 xxxx 的 Unicode 字符代替。注意 unescape 方法不应用于解码“统一资源标识符”(URI)。请改用 decodeURI 和 decodeURIComponent 方法。



decodeURI 方法

返回一个已编码的统一资源标识符 (URI) 的非编码形式。

function decodeURI(URIstring : String) : String

参数

URIstring

必选。表示编码 URI 的字符串。

备注

使用 decodeURI 方法代替已经过时的 unescape 方法。

decodeURI 方法返回一个字符串值。

如果 URIString 无效,将发生 URIError。



decodeURIComponent 方法

返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。

function decodeURIComponent(encodedURIString : String) : String

必选的 encodedURIString 参数是一个表示已编码的 URI 组件的值。

备注

URIComponent 是一个完整的 URI 的一部分

 

jquery.cookie 设置cookies使用encodeURIComponent和decodeURIComponent进行编码和解码,如果要在Java里取得jquery.cookie设置的值,会使用java.net.URLDecoder.decode(v, "UTF-8");进行解码方可取得正确的值!

© 著作权归作者所有

黄平俊

黄平俊

粉丝 85
博文 17
码字总数 4346
作品 0
广州
私信 提问
三分钟读懂Java与JavaScript的区别,让小白摘帽

Java跟JavaScript虽然在名称上有些许相似,但其实是两种完全不同的语言。Java是一种程序设计语言,JavaScript是客户端的脚本语言,把这两样东西放在一起比较在科学上其实并不严谨。但它们唯一...

小欣妹妹
2017/10/21
0
0
json-rpc-for-java的网友评论

json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量 级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要...

红薯
2009/12/11
884
2
Java 语言频遭替换,这次真的要狗带了吗?

斯坦福大学在最近更新的《程序设计方法学》课程中(代号 CS 106J),用 JavaScript,替换掉了此前主修的 Java 语言(课程代号 CS 106A)。 本次变动由名誉教授 Eric Roberts 牵头,作为 CS 1...

达尔文
2017/07/23
10.2K
65
在服务器端运行JavaScript文件(一)

简介: 把JavaScript脚本与服务器上Java代码相结合,从而获得在服务器端和客户端都能够自由使用的JavaScript脚本。另外,经过这一系列的被展现技术,无论是基于Ajax还是非Ajax的客户端,都将...

长平狐
2012/10/16
976
0
Java 已死?听听这些重量级大咖是怎么说的

在 Java 的世界发生了什么事?事实上,很多。Java 9 在 9 月将会来临,Jigsaw 终于获批,而 Java 大咖正在给我们提供关于这一编程语言的未来的有价值的洞察。在这分为 3 部分的访谈系列中,我...

oschina
2017/07/13
5.1K
17

没有更多内容

加载失败,请刷新页面

加载更多

mysql中自增主键为什么不是连续的

1 自增主键不能保证连续递增 2 MYSQL 5.7之前版本,自增值保存在内存里,没有持久化,重启后会拿当前max(id)+1作为最新主键;8版本,将自增值的变更记录在redo log中,重启的时候依靠redo lo...

writeademo
36分钟前
3
0
Python 进制之间的转换

Step 1.Python 使用bin将不同进制之间的转换 十进制转换成二进制>>> bin(10)'0b1010'八进制转换成二进制>>> bin(0o7)'0b111'十六进制转换成二进制>>> bin(0xE)'0b1110......

Linux_Anna
41分钟前
1
0
Python3字典详解

创建和使用字典 字典可以用下面方式创建: phoneBook = {"Bill":"1234", "Mike":"4321"} 字典中,键是唯一的。如果键不唯一,那么程序也不会抛出异常,只是相同的键值会被最后一个覆盖: ph......

ZeroBit
42分钟前
1
0
Mysql中的DBlink的使用

在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库。此时我们就需要用到数据表映射。如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知道...

scgaopan
47分钟前
6
0
windows自带端口转发配置

windows系统有自带portproxy功能。目前只支持tcp协议的端口转发,前提需要作为portproxy的主机需要安装IPV6,安装可以不启用IPV6。 添加方法 假定需要通过192.168.1.8的14941端口连接192.168...

WUBAOQUAN
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部