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自动判断浏览器分辨率的代码
Jan 28 Javascript
jquery 学习笔记一
Apr 07 Javascript
关于js注册事件的常用方法
Apr 03 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
Apr 17 Javascript
浅谈javascript语法和定时函数
May 03 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 Javascript
原生JS实现图片轮播切换效果
Dec 15 Javascript
Angular数据绑定机制原理
Apr 17 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
Node.js Stream ondata触发时机与顺序的探索
Mar 08 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 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生成Flash动画的实现代码
2010/03/12 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
php Session存储到Redis的方法
2013/11/04 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
python处理文本文件并生成指定格式的文件
2014/07/31 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
关于python字符串方法分类详解
2019/08/20 Python
python flask中动态URL规则详解
2019/11/22 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
如何写出好的Java代码
2014/04/25 面试题
农村婚礼证婚词
2014/01/10 职场文书
新课培训心得体会
2014/09/03 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2014年度思想工作总结
2014/11/27 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
Tomcat弱口令复现及利用
2022/05/06 Servers
使用scrapy实现增量式爬取方式
2022/06/21 Python
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript