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获取颜色在ie和ff下的区别示例介绍
Mar 28 Javascript
js禁止页面刷新与后退的方法
Jun 08 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
js如何获取网页所有图片
May 12 Javascript
vue父组件点击触发子组件事件的实例讲解
Feb 08 Javascript
node.js基础知识小结
Feb 26 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 Javascript
简单说说如何使用vue-router插件的方法
Apr 08 Javascript
vue权限问题的完美解决方案
May 08 Javascript
vue实现节点增删改功能
Sep 26 Javascript
VSCode launch.json配置详细教程
Jun 18 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
PHP程序员编程注意事项
2008/04/10 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP函数引用返回的实例详解
2016/09/11 PHP
php二维码生成以及下载实现
2017/09/28 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
语义化 H1 标签
2008/01/14 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
node.js的事件机制
2017/02/08 Javascript
如何在vue中使用ts的示例代码
2018/02/28 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
python的数学算法函数及公式用法
2020/11/18 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
python urllib和urllib3知识点总结
2021/02/08 Python
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
普通院校学生的自荐信
2013/11/27 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
怎样写离婚协议书
2015/01/26 职场文书
活动经费申请报告
2015/05/15 职场文书
java开发双人五子棋游戏
2022/05/06 Java/Android