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脚本语言在网页中的简单应用
May 13 Javascript
JS在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
Jquery实现简单的动画效果代码
Mar 18 Javascript
cookie的复制与使用记住用户名实现代码
Nov 04 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
Jun 20 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
Aug 11 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
jQuery元素选择器实例代码
Feb 06 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
详解javascript设计模式三:代理模式
Mar 25 Javascript
js实现课堂随机点名系统
Nov 21 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
js最简单的拖拽效果实现代码
2010/09/24 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
python实现简单坦克大战
2020/03/27 Python
浅谈PyTorch中in-place operation的含义
2020/06/27 Python
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
高级编程求职信模板
2014/02/16 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
房屋所有权证明
2014/10/20 职场文书
法定代表人免职证明
2015/06/24 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记