JavaScript字符集编码与解码
一、字符集
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
参考资料:
字符集和字符编码(Charset & Encoding)
浏览器的进制常识
JavaScript字符集编码与解码相关推荐
- 前端 javascript 字符编码与解码
前端 javascript 开发过程中, 有时候会遇到字符串的编码和解码. 面对眼花缭乱的js原生方法, 到底如何选择总是很头大, 在此对常用方法做个小结. escape & unescape ...
- javascript中编码与解码的decodeURI()、decodeURIComponent()区别
1. 定义和用法 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码.decodeURIComponent() 函数可对 encodeURIComponent() ...
- JavaScript - URI编码、解码,转换整型的使用说明
<html><head><head><body><script language="javascript">// URI ...
- Java字符集编码解码详细介绍
文章目录 字符集 字符集的基本认识 字符集编码和解码 字符集 字符集的基本认识 字符集基础知识 计算机底层不可以直接存储字符的.计算机中底层只能存储二进制(0.1) 二进制是可以转换成十进制的 计算机 ...
- JavaScript进行UTF-8编码与解码
JavaScript本身可通过charCodeAt方法得到一个字符的Unicode编码,并通过fromCharCode方法将Unicode编码转换成对应字符. 但charCodeAt方法得到的应该是一 ...
- javascript中的Base64.UTF8编码与解码详解
javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...
- Linux上的js解码,使用JavaScript实现Base64编码与解码
我们知道,浏览器的window对象提供有window.atob()和window.btoa()方法可以对字符串进行Base64编码和解码. console.log(window.btoa(window ...
- JavaScript 文本编码解码详解笔记
JavaScript 文本的编码解码 文本编码 文本编码方法分为批量编码和流编码. 1.批量编码 所谓批量编码,指的是JavaScript引擎会同步编码整个字符串.对于非常长的字符串,可能会花较长时间 ...
- js php base64,JavaScript实现Base64编码与解码的代码详解
本篇文章给大家分享的是jJavaScript实现Base64编码与解码的代码详解,内容挺不错的,希望可以帮助到有需要的朋友 一.加密解密方法使用//1.加密 var str = '124中文内容'; ...
最新文章
- win7修改网络计算机名字,小编分析win7系统修改计算机名字的操作方法
- IE JS关闭窗口不提示的方法
- redis延迟队列 实现_php使用redis的有序集合zset实现延迟队列
- UIView 的基础
- C++设计模式之策略模式(Strategy)
- AbstractEndpoint 和 ProtocolHandler
- dom文档对象手册_编程小白网页学习笔记之文档对象模型(DOM)
- 如何训练自己的编程思路
- mysql 中 unix_timestamp和from_unixtime 时间戳函数
- jquery鼠标右键事件
- 算法左神左程云耗尽5年心血分享程序员代码面试指南第2版文档
- Outlook登录163邮箱,qq邮箱以及企业邮箱等邮箱
- 使用CSS3实现圆形进度条
- uniapp中使用uview组件u-icon 编辑到微信小程序样式问题
- 基于一维卷积Conv1D实现猫狗叫声语音识别
- Postgresql适配国产化人大金仓(kingbase)
- android电视 优酷视频,将优酷视频投屏到智能电视上,竟然还有这种操作
- 奇虎360运维工程师招聘测试题
- ASP.NET Core源码学习(一)Hosting
- 睡五分钟等于六钟头的方法(熬夜必看)
热门文章
- 树莓派linux系统识别u盘启动,使用U-Boot让树莓派从U盘启动
- 工程桩基围护知识_地基基础工程专业承包资质
- arm64 指令集_透彻解析LED驱动芯片HT1632C指令集与驱动编程
- 三位数的茎叶图怎么看_人参怎么判断年份,这些点你要了解
- c语言 gt 5u,Linux之sar命令-php面向对象实例-WinFrom控件库|.net开源控件库|HZHControls官网...
- 什么是事件?JS中都有哪些事件?
- SDOI2016R2(怎么可能是解题报告)
- 针对《关于郝培强的《为什么我们招聘的时候绝不要传智播客的学生?》》的看法
- 14.图像透视——人类视觉,平行线测验,其他模型,乐趣与角度_4
- 【英语学习】【English L06】U08 News L2 Have you read the news about the light show?