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 相关文章推荐
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
JS去除右边逗号的简单方法
Jul 03 Javascript
如何判断元素是否为HTMLElement元素
Dec 06 Javascript
js toFixed()方法的重写实现精度的统一
Mar 06 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
Apr 03 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
Aug 27 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
Mar 10 Javascript
es6在react中的应用代码解析
Nov 08 Javascript
webstorm中vue语法的支持详解
May 09 Javascript
layui实现三级导航菜单
Jul 26 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
计数器详细设计
2006/10/09 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
python实现获取Ip归属地等信息
2016/08/27 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
如何用Django处理gzip数据流
2021/01/29 Python
教你怎样写好自我评价
2013/10/05 职场文书
经理管理专业自荐信范文
2013/12/31 职场文书
文秘大学生求职信
2014/02/25 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang
react如何快速设置文件路径别名
2021/04/28 Javascript
图片批量处理 - 尺寸、格式、水印等
2022/03/07 杂记