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代码
Mar 10 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
Jan 15 Javascript
window.requestAnimationFrame是什么意思,怎么用
Jan 13 Javascript
javascript闭包的高级使用方法实例
Jul 04 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
jQuery UI设置固定日期选择特效代码分享
Aug 27 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
vue-cli3+typescript新建一个项目的思路分析
Aug 06 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
Mar 07 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中文字符截取防乱码
2008/03/28 PHP
基于empty函数的输出详解
2013/06/17 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
详解NodeJS框架express的路径映射(路由)功能及控制
2017/03/24 NodeJs
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
简单讲解Python中的闭包
2015/08/11 Python
详解Python发送邮件实例
2016/01/10 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python中常见错误及解决方法
2020/06/21 Python
通过代码实例了解Python sys模块
2020/09/14 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
使用HTML5和CSS3制作一个模态框的示例
2018/03/07 HTML / CSS
最新的大学生找工作自我评价
2013/09/29 职场文书
庆七一活动方案
2014/01/25 职场文书
市场营销策划方案
2014/06/11 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
幼儿园六一主持词
2015/06/30 职场文书
七年级数学教学反思
2016/02/17 职场文书
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS