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字符集编码与解码详谈相关文章请关注PHP中文网!
财客网还为您提供以下相关内容希望对您有帮助:
js中url格式解密
在JavaScript中,URL的编码和解码主要使用encodeURI和decodeURI函数。编码: 使用encodeURI函数可以将字符串str1编码为URL格式。这个编码过程主要是将空格转换为%20,特殊字符转换为对应的ASCII十六进制表示,例如%E4%BD%A0表示中文字符“你”。解码: 使用decodeURI函数可以将编码后的URL格式字符
javascript语言中的字符编码
JavaScript语言采用Unicode字符集,但只支持UTF-16这一种编码方式。所有JavaScript代码在计算机中都是以UTF-16的2或4字节方式存储。基本多语言平面(BMP):UTF-16编码中,从0x0到0xFFFF的码段(即基本多语言平面)的字符,编码后的数值和Unicode对应的码点一致,占用2个字节。辅助平面(SMP):从0x10000...
Base编码知识详解
字符集:Base使用个字符来表示二进制数据。编码规则:每三个字节的二进制数据被转换为四个Base字符。如果数据长度不是3的倍数,不足部分用’=‘字符填充。数据膨胀:体积增加:由于编码规则,Base编码后的数据体积大约会增加三分之一。JavaScript中的Base编码与解码:工具函数:JavaScr...
url 汉字编码 url编码在线转换中文
在JavaScript中,可以使用以下函数对URL进行编码和解码:编码函数:encodeURI():用于对整个URI进行编码,不编码特定字符(如冒号、斜杠、分号和问号)。encodeURIComponent():用于对URI的组件进行编码,编码范围更大,包括上述不被encodeURI()编码的字符。escape():采用ISO Latin字符集对字符串进行编码,不...
javascript编程如何实现gbk编码?
在JavaScript中实现GBK编码通常涉及使用第三方库或浏览器原生API。以下是一些常用方法:1. 使用第三方库,例如iconv-lite。它在Node.js和浏览器中广泛使用。实现代码如下:const iconv = require('iconv-lite');const gbkStr = iconv.decode(Buffer.from(gbkBytes), 'GBK');2. 利用浏览器原生API,如...
javascript中一个字符占几个字节
在JavaScript中,一个字符占用的字节数取决于编码方式:对于英文字符:在GB2312、GBK、GB18030、ISO88591编码下,一个英文字符占用1个字节。在UTF8编码下,一个英文字符占用1个字节,但由于UTF8编码的字节序标识和变长编码特性,它通常用于处理多字节字符集,如中文字符。在UTF16、UTF16BE、UTF16LE编码...
js encodeURIComponent()怎么解码
encodeURIComponent() 方法:把 URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! *...
Base编码解码 | 定义&原理&简单实现
Base编码解码的定义、原理及简单实现如下: 定义:Base编码是一种在计算机编程中广泛应用的二进制数据转换技术,它将二进制数据转换成可打印的ASCII字符序列。 原理: 分割二进制数据:Base编码将原始二进制数据按每6位一组进行分割。 转换字符集:每6位二进制数据被转换成对应的个字符集中的一个字符。这个字符...
JavaScript 中文(或非 ASCII 字符)与 base 互转
JavaScript 中文(或非 ASCII 字符)与 base 互转存在差异,主要体现在浏览器和 Node.js 环境中。本文章将分别讨论这两种情况。浏览器环境:在浏览器中,为了将中文或其他非 ASCII 字符进行 base 编码,不能直接使用原始的 atob() 和 btoa() 函数,因为它们仅支持拉丁-1字符集。对于需要处理中文...
前端字符集 前端字符串的长度怎么算
UTF-8:UTF-8 是一种变长字符编码,它可以表示任何标准的 Unicode 字符。在 Web 开发中,UTF-8 是最常用的字符集,因为它兼容性好且能够表示所有语言的字符。字符编码与解码:在前端开发中,有时需要对字符串进行编码和解码操作,以确保字符在不同系统或网络传输中正确显示。JavaScript 提供了 encode...