JavaScript字符集编码与解码详谈


Posted in Javascript onFebruary 02, 2017

一、字符集

1)字符与字节(Character)

字符是各种文字和符号的总称,包括乱码;一个字符对应1~n个字节,一字节对应8位,每位用0或1表示。

2)字符集(Character Set)

字符集是多个字符的集合,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、Unicode字符集等。

3)字符集编码(Character Encoding)

字符集编码就是将符号转换为计算机可读的二进制,解码就是把二进制转换为人类可读的符号。

字符集大多对应一种编码方式(例如GBK对应GBK编码),但Unicode编码有多种,包括UTF-8、UTF-16、UTF-32和UTF-7。

目前网页用的最多的就是“UTF-8”,UTF-8使用一至四个字节为每个字符编码,是ASCII的一个超集,所以现存的ASCII文本不需要转换

二、浏览器进制

1)HTML属性中使用十进制和十六进制

十进制在HTML中可使用“8”,十六进制,则使用“Z”,比十进制多了个x,进制码中也多了a~f这6个字符来表示10~15。

2)CSS属性中使用十进制和十六进制

CSS兼容HTML的进制形式,除此之外,十六进制还可以使用“\6c”的形式来表示。

3)JavaScript编码封装

可以直接通过eval执行字符串八进制和十六进制两种编码方式,其中八进制用“\56”表示,十六进制用“\x5c”表示。

如果代码中应用了汉字并且需要进行进制编码,那么只能进行十六进制Unicode编码,其表示形式为:“\u4ee3\u7801”。

在“Web前端黑客技术揭秘”中经封装了两个方法来做编码和解码,主要用到了下面两个方法,具体代码可查看此处。

核心代码是:“str.charCodeAt(char).toString(进制)”与“String.fromCharCode(parseInt(code,进制))”

charCodeAt() 方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元

静态String.fromCharCode() 方法返回使用指定的Unicode值序列创建的字符串。

还可以通过一个在线网页进行编码解码“MonyerJS”。

4)HTML自动解码机制

例如在网页中输入16进制的“Hello”,自动就会解码为“hello”。

还有一些比较熟知的空格“ ”也是这种机制。

三、浏览器编码

JavaScript中有三对可以对字符串编码解码的函数,分别是:

escape/unescape、encodeURI/decodeURI、encodeURIComponent/decodeURIComponent。

主要的区别还是不编码的字符个数。

1)escape不编码的字符有69个

*、+、-、.、/、@、_、0~9、a~z、A~Z而且escape对0~255以外的unicode值进行编码时输出%u****格式。

2)encodeURI不编码的字符有82个

!、#、$、&、'、(、)、*、+、,、-、.、/、:、;、=、?、@、_、~、0~9、a~z、A~Z

3)encodeURIComponent不编码的字符有71个

!、'、(、)、*、-、.、_、~、0~9、a~z、A~Z

Javascript 相关文章推荐
js href的用法
May 13 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
May 07 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
Nov 28 Javascript
node.js [superAgent] 请求使用示例
Mar 13 Javascript
JS插件overlib用法实例详解
Dec 26 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
Jul 05 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
js中的闭包学习心得
Feb 06 Javascript
js实现各浏览器全屏代码实例
Jul 03 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 Javascript
javascript代码简写的几种常用方式汇总
Aug 23 Javascript
JS实现购物车特效
Feb 02 #Javascript
jQuery实现复选框的全选和反选
Feb 02 #Javascript
jQuery制作图片旋转效果
Feb 02 #Javascript
浅谈javascript中的 “ && ” 和 “ || ”
Feb 02 #Javascript
Javascript中的 “&” 和 “|” 详解
Feb 02 #Javascript
javascript实现简易计算器
Feb 01 #Javascript
javascript实现右下角广告框效果
Feb 01 #Javascript
You might like
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
php面向对象值单例模式
2016/05/03 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
提高Laravel应用性能方法详解
2019/06/24 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
Python3 模块、包调用&路径详解
2017/10/25 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
2018/06/13 Python
numpy返回array中元素的index方法
2018/06/27 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python super函数使用方法详解
2020/02/14 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
办理信用卡工作证明
2014/01/11 职场文书
《最后的姿势》教学反思
2014/02/27 职场文书
实习协议书范本
2014/04/22 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
房产公证书样本
2015/01/23 职场文书