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 相关文章推荐
深入解析JavaScript中的变量作用域
Dec 06 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
JavaScript编写推箱子游戏
Jul 07 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
Aug 08 Javascript
浅谈angularJS中的事件
Jul 12 Javascript
js制作支付倒计时页面
Oct 21 Javascript
JS字符串按逗号和回车分隔的方法
Apr 25 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
May 22 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
TypeScript的安装、使用、自动编译的实现
Apr 10 Javascript
微信小程序实现轮播图指示器
Jun 25 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
ASP知识讲座四
2006/10/09 PHP
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP文件操作详解
2016/12/30 PHP
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
纯js仿淘宝京东商品放大镜功能
2017/03/02 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
jQuery冲突问题解决方法
2021/01/19 jQuery
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
英国最大的独立玩具专卖店:The Entertainer
2019/09/06 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
党员证明模板
2015/06/19 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
django 认证类配置实现
2021/11/11 Python
日元符号 ¥
2022/02/17 杂记