JavaScript字符集编码与解码详谈

发布时间 - 2026-01-10 22:49:18    点击率:

一、字符集

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  # 字符集  # 解码  # 详解JavaScript中的forEach()方法的使用  # JavaScript实现随机码的生成与校验  # JavaScript中字符串GBK与GB2312的编解码示例讲解  # 还可以  # 转换为  # 就会  # 多个  # 最多  # 不需要  # 两种  # 中有  # 用了  # 可以直接  # 来做  # 装了  # 还有一些  # 以对  # 也多  # 有多种  # 中应  # 中经  # x5a  # 十进制多 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理文件下载请求?(Response示例)  Python并发异常传播_错误处理解析【教程】  香港服务器租用每月最低只需15元?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel怎么在Controller之外的地方验证数据  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何在万网主机上快速搭建网站?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  如何在万网自助建站中设置域名及备案?  如何快速完成中国万网建站详细流程?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  历史网站制作软件,华为如何找回被删除的网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  如何在服务器上配置二级域名建站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  Python自动化办公教程_ExcelWordPDF批量处理案例  微信小程序 wx.uploadFile无法上传解决办法  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  如何在IIS中新建站点并配置端口与物理路径?  如何在 Pandas 中基于一列条件计算另一列的分组均值  香港服务器如何优化才能显著提升网站加载速度?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  javascript中对象的定义、使用以及对象和原型链操作小结  智能起名网站制作软件有哪些,制作logo的软件?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  高端网站建设与定制开发一站式解决方案 中企动力  JavaScript中的标签模板是什么_它如何扩展字符串功能  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Laravel如何实现多对多模型关联?(Eloquent教程)  C#如何调用原生C++ COM对象详解  js代码实现下拉菜单【推荐】  如何在万网ECS上快速搭建专属网站?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  java ZXing生成二维码及条码实例分享  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  js实现点击每个li节点,都弹出其文本值及修改  魔毅自助建站系统:模板定制与SEO优化一键生成指南  网站建设要注意的标准 促进网站用户好感度!