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 相关文章推荐
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
用Javascript同时提交多个Web表单的方法
Dec 26 Javascript
使用JavaScript的AngularJS库编写hello world的方法
Jun 23 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
Jun 14 Javascript
关于JavaScript数组你所不知道的3件事
Aug 24 Javascript
yarn与npm的命令行小结
Oct 20 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
基于Node的React图片上传组件实现实例代码
May 10 Javascript
jQuery实现frame之间互通的方法
Jun 26 jQuery
了解在JavaScript中将值转换为字符串的5种方法
Jun 06 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
vant picker+popup 自定义三级联动案例
Nov 04 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
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python正则表达式知识汇总
2017/09/22 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
matplotlib实现区域颜色填充
2019/03/18 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
零件设计自荐信范文
2013/11/27 职场文书
主治医师岗位职责
2013/12/10 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
三严三实对照检查材料
2014/08/25 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
mysql数据库如何转移到oracle
2022/12/24 MySQL