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 相关文章推荐
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
Apr 24 Javascript
jQuery与ExtJS之选择实例分析
Aug 19 Javascript
jquery插件制作简单示例说明
Feb 03 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
Aug 24 Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
浅谈angular2 组件的生命周期钩子
Aug 12 Javascript
vue + element-ui实现简洁的导入导出功能
Dec 22 Javascript
如何编写一个d.ts文件的步骤详解
Apr 13 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
Jun 18 jQuery
微信小程序利用云函数获取手机号码
Dec 17 Javascript
JavaScript实现捕获鼠标坐标
Apr 12 Javascript
原生JS实现无缝轮播图片
Jun 24 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的变量类型和作用域详解
2014/03/12 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
Vue渲染函数详解
2017/09/15 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
快速查询Python文档方法分享
2017/12/27 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
python 读取修改pcap包的例子
2019/07/23 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Python实现壁纸下载与轮换
2020/10/19 Python
理工大学毕业生自荐信
2013/11/01 职场文书
企业厂长岗位职责
2013/12/17 职场文书
五星级酒店餐饮部总监的标准岗位职责
2014/02/17 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
校园环保标语
2014/06/13 职场文书
迎国庆演讲稿
2014/09/05 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
python脚本框架webpy的url映射详解
2021/11/20 Python