`

JavaScript中的常用编码

 
阅读更多

一些名词

bit
二进制数字,称作比特
byte
字节,1byte = 8bits。这和ASCII有关,最初ASCII包含128个常用字符,128=2的7次方+1个补码反码表示负数什么的,因此每个字符需要8个二进制来表示。
字符集
charset,也就是某个符号和某个数字映射关系的一个表,也就是它决定了107 是koubei 的 ‘a’,21475 是口碑的“口”,不同的表有不同的映射关系,如 ascii,gb2312,Unicode. 通过这个数字和字符的映射表,我们可以把一个二进制表示的数字转换成某个字符。
编码方式
同是对于应“口”的 21475 这个数,我们是用 \u5k3e3 表示呢,还是用 %E5%8F%A3 来表示呢?这就是由 character encoding 来决定
Unicode
UCS, Universal Character Set。一个囊括所有字符在内的字符集和对应编码方式的标准
gbk, gb2312, utf-8
gbk,gb2312是字符集 (charset)
utf-8 是一种编码方式 (character encoding) ,是 Unicode 标准中 UCS 字符集的一种编码方式
Percent-encoding
Percent-encoding, also known as URL encoding, is a mechanism for encoding information in a Uniform Resource Identifier (URI) under certain circumstances. Although it is known as URL encoding it is, in fact, used more generally within the main Uniform Resource Identifier (URI) set, which includes both Uniform Resource Locator (URL) and Uniform Resource Name (URN). As such it is also used in the preparation of data of the "application/x-www-form-urlencoded" media type, as is often used in email messages and the submission of HTML form data in HTTP requests.
http://en.wikipedia.org/wiki/Percent-encoding

它有两部分字符组成:保留字符和非保留字符。

保留字符:! * ‘ ( ) ; : @ & = + $ , / ? % # [ ]
保留字符,是有特殊意义的,如果在不代表那些特殊意义而代表原意的时候出现,必须经过编码。例如1 ==> %21

非保留字符:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 – _ . ~

javascript的内置函数 encodeURI、decodeURI、encodeURIComponent、decodeURIComponent 就是进行的 Percent Encode,只是在对待 : / ; ?等特殊字符的时候有区别。

JavaScript:escape, encodeURIComponent和encodeURI

对于ASCII字符
这三个函数的作用都是将字符转换成百分比编码(Percent-encoding),区别是各自排除编码的字符不同:
escape()  will not encode:  @ * / +
encodeURI()  will not encode:  ~ ! @ # $ & * ( ) = : / , ; ? + '
encodeURIComponent()  will not encode:  ~ ! * ( ) '
对于非ASCII字符
escape和encodeURIComponent差异比较大:
escape('一') == '%u04BB'
encodeURI('一') == '%u04BB'
encodeURIComponent('一') == '%u04BB'

escape('康') == '%uFFFD%uFFFD'
encodeURI('康') == '%EF%BF%BD%EF%BF%BD'
encodeURIComponent('康') == '%EF%BF%BD%EF%BF%BD'

escape的返回值是非标准Pecent-encoding, 现在已经没有标准支持,建议少用

encodeURI和encodeURIComponent

主要区别:encodeURIComponent比encodeURI转码的字符要多一部分,
包括:@ # $ & = : / , ; ? +

之所以有上面两个不同的函数,是因为我们在写JS代码的时候对URI进行两种不同的编码处理需求。
encodeURI可以用来对完整的URI字符串进行编码处理。
而encodeURIComponent可以对URI中一个部分进行编码,从而让这一部分可以包含一些URI保留字符。
参考:javascript encodeURI和encodeURIComponent的比较

分享到:
评论

相关推荐

    js技巧 javaScript编码技巧

    js技巧 javaScript编码技巧,里面包含了常用的网站开发的特效,例如新闻滚动条,弹出窗口,文字循环滚动等。

    jconv:用于日语字符编码的纯JavaScript转换器

    此模块支持日语中常用的编码: Shift_JIS(CP932),ISO-2022-JP(-1),EUC-JP,UTF8,UNICODE(UCS2)转换。 纯Javascript,无需编译。 比快得多。 安装 $ npm install jconv 用法 例如,简单地从EUC-JP转换...

    JavaScript字符的unicode编码

    // 补充说明: 常用半角字符,如大小写字母、数字、常用标点等,其unicode编 // 码值与ascii码相同。因此本函数也可以用作不严格地判断一个字 // 符是半角还是全角。当返回值小于256时,char为半角字符,否则 // char...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    90、原生JavaScript常用的正则表达式大收集 91、原生JavaScript实现窗体改变事件resize的操作(兼容所以的浏览器) 92、原生JavaScript用正则清除空格分左右 93、原生JavaScript判断变量是否空值 94、原生JavaScript...

    javascript在线编码查询工具

    常用符号、数字、字符 33~126 94 查看 数字 48~57 10 查看 大写字母 65~90 26 查看 小写字母 97~122 26 查看 更多参考资料:编码表 字符: ~ 小字 中字 大字 共0个 加载中… [Ctrl+A 全选 注:如需...

    JavaScript常用正则表达式

    javascript中常用常用的正则表达式,如中国邮政编码验证 、数字的验证

    javascript常用校验脚本

    javascript常用校验脚本,包括电子邮件地址、移动电话号码、身份证、计算机的IP地址 、邮政编码

    JavaScript详解(第2版)

    1.4 JavaScript及其在Web页面中的位置 3 1.5 Ajax是什么 5 1.6 JavaScript是什么样子的 6 1.7 JavaScript及其在Web开发中承担的角色 7 1.8 JavaScript和事件 9 1.9 标准化JavaScript和W3C 11 1.9.1 ...

    程序天下:JavaScript实例自学手册

    第1章 页面特效 ...1.2 页面自动最大化 1.3 页面自动刷新 1.4 页面的后退、刷新、前进 1.5保护网页源代码 1.6 保护自己的网页不被放入框架 1.7 保护自己的网页不被放入...22.13 用JavaScript实现编码解码 22.14 创建带属性...

    javascript常用的代码大全

    收集了107种在javascript编码中经常用到的代码,实用性非常强,值得收藏哦!

    《程序天下:JavaScript实例自学手册》光盘源码

    第1章 页面特效 ...1.2 页面自动最大化 ...22.13 用JavaScript实现编码解码 22.14 创建带属性的对象 22.15 用prototype实现JavaScript的继承 22.16 JavaScript制作哈希表 第23章 其他技巧及特效 23.1 ...

    Javascript写的asp功能包

    3、ajax功能,客户端与服务器端均由javascript编写,将客户端参数和函数名经XML编码后传至服务端,服务器执行后将结果传回客户端,从而实现了ajax。 4、常用组件,如Hashtable和StringBuffer,能够提高asp应用的性能...

    JavaScript完全自学宝典 源代码

    Calculate1.java 计算浮点数运算结果并调用页面中JavaScript函数的Applet。 Calculate1.class Calculate1.java的字节码文件。 第16章(\c16) 示例描述:介绍JavaScript访问本地文件的各种方法。 16.1....

    JavaScript基本编码模式小结

    本文中笔者整理的这些“模式”包含了编写JavaScript代码时一些常用的方法或者小技巧,可以帮助初学JavaScript的同学迅速提升代码质量。当然,在此之前首先要保证规范的书写习惯,在此之上可以再将本文介绍的知识点...

    Javascript 与正则表达式

    8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5} 9、提取信息中的中国身份证号码:\d{18}|\d{15} 10、提取信息中的任何数字:(-?\d*)(\.\d+)? 11、匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) \/>/

    javascript压缩工具

    本软件还可以通过对javascript的变量名称和过程名称进行编码,从而起到混淆ja代码的作用,保护您的劳动成功。 JS代码压缩,基本原理为: 1. 压缩多余的空格和换行符 2. 删除注释,因为注释只对程序员有用而对于浏览...

    javascript中对变量类型的判断方法

    在讲解各种方法之前,我们首先定义出几个测试变量,看看后面的方法究竟能把变量的类型解析成什么样子,以下几个变量差不多包含了我们在实际编码中常用的类型。 var num = 123; var str = 'abcdef'; var bool = true...

    jschardet:JavaScript中的字符编码自动检测(Python的chardet端口)

    夏尔代python的chardet的端口..."次常用國字標準字體表" in Big5jschardet.detect("\xa6\xb8\xb1\x60\xa5\xce\xb0\xea\xa6\x72\xbc\xd0\xb7\xc7\xa6\x72\xc5\xe9\xaa\xed")// { encoding: "Big5", confidence: 0.99 }/

    Javascript 常用函数

    escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行之。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对数的底) 的幂。 fixed 方法...

Global site tag (gtag.js) - Google Analytics