首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么HTML将2字节和3字节的字符等同起来,而不是4字节?

HTML将2字节和3字节的字符等同起来,而不是4字节,是因为HTML是一种基于ASCII编码的文本标记语言,最初设计时主要用于表示英文字符和常用符号。ASCII编码使用一个字节(8位)来表示一个字符,可以表示的字符范围是0-127。

随着国际化的发展,出现了更多的字符集,如Unicode字符集。Unicode字符集使用不同的编码方案来表示字符,其中最常用的是UTF-8编码。UTF-8编码是一种变长编码,使用1到4个字节来表示不同的字符。

在HTML中,为了向后兼容ASCII编码,同时支持Unicode字符集,采用了一种转义机制,即使用实体引用来表示特殊字符。对于2字节和3字节的字符,HTML使用相同的转义机制,将它们等同起来,以确保在不同的环境中都能正确解析和显示。

对于4字节的字符,HTML并没有直接支持的转义机制。这是因为在HTML设计时,4字节字符并不常见,而且使用4字节来表示字符会增加文档的大小。如果需要在HTML中使用4字节字符,可以使用JavaScript或其他编程语言来处理和显示。

总结起来,HTML将2字节和3字节的字符等同起来,而不是4字节,是为了保持向后兼容性和简化文档编码,同时确保在不同环境中都能正确解析和显示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一文读懂Base64编码

3字节有 24 个比特,对应于 4 个 base64 单元,即 3字节可由 4 个可打印字符来表示。相应转换过程如下图所示: ?...由图可知,Man (3字节)编码结果为 TWFu(4字节),很明显经过 base64 编码后体积会增加 1/3。Man 这个字符长度刚好是 3,我们可以用 4 个 base64 单元来表示。...但如果待编码字符串长度不是 3 整数倍时,应该如何处理呢?...以编码字符 A 为例,其所占字节数为 1,不能被 3 整除,需要补 2字节,具体如下图所示: ?...由上图可知,字符 A 经过 base64 编码后结果是 QQ==,该结果后面的两个 = 代表补足字节数。最后个 1 个 base64 字节块有 4 位是 0 值。

1.6K20

【基础知识】497- 一文读懂Base64编码

3字节有 24 个比特,对应于 4 个 base64 单元,即 3字节可由 4 个可打印字符来表示。相应转换过程如下图所示: ?...由图可知, Man (3字节)编码结果为 TWFu(4字节),很明显经过 base64 编码后体积会增加 1/3。Man 这个字符长度刚好是 3,我们可以用 4 个 base64 单元来表示。...但如果待编码字符串长度不是 3 整数倍时,应该如何处理呢?...以编码字符 A 为例,其所占字节数为 1,不能被 3 整除,需要补 2字节,具体如下图所示: ?...由上图可知,字符 A 经过 base64 编码后结果是 QQ==,该结果后面的两个 = 代表补足字节数。最后 1 个 base64 字节块有 4 位是 0 值。

1.2K10

刨根究底字符编码之十三——UTF-16编码方式

UCS-2,是早期遗留下来历史产物。 UCS-2字符编号直接映射为字符编码(CEF,而非CES,详见前文中对现代字符编码模型解释),亦即字符编号就是字符编码,中间没有经过特别的编码算法转换。...),却不是直接映射关系,而是必须通过代理机制这一编码算法转换,亦即这部分字符字符编号与字符编码不是等同。...因此,在Unicode引入了UTF-16编码方式之后,站在现代字符编码模型角度上来看的话,再将UCS-2UCS-4直接称之为字符编码方式CEF已不是很合适,更多应该是编号字符集CCS中概念(当然...,在了解其历史原因之后,UCS-2UCS-4同时理解为编号字符集CCS字符编码方式CEF也未尝不可);若将UCS-2等同于UTF-16,UCS-4等同于UTF-32(后文会有介绍),显然也是不合适...所以说,UTF-16是变长编码方式,每个字符编码为2字节4字节UCS-2是定长编码方式,每个字符编码固定为2字节

92441

Javascript中url编码与解码(详解)

又如,Url编码格式采用是ASCII码,不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。...q=%61%62%63,实际上就等同于在google上搜索abc了。又如@符号在ASCII字符集中对应字节为0x40,经过Url编码之后得到是%40。 常见字符Url编码列表: !...% # [ ] %3D + %24 %2C %2F %3F % %23 %5B %5D 对于非ASCII字符,需要使用ASCII字符超集进行编码得到相应字节,然后对每个字节执行百分号编码。...显然这并不是使用UTF-8字符集进行Url编码得到结果(在Google上搜索“中文”,Url中显示是%E4%B8%AD%E6%96%87)。...另外,很多HTTP监视工具或者浏览器地址栏等在显示Url时候会自动Url进行一次解码(使用UTF-8字符集),这就是为什么当你在Firefox中访问Google搜索中文时候,地址栏显示Url包含中文缘故

2.4K90

【Java基础-3】吃透Java IO:字节流、字符流、缓冲流

字节字符关系与区别? 字符流是否使用了缓冲? 缓冲流效率一定高吗?为什么? 缓冲流体现了Java中哪种设计模式思想? 为什么要实现序列化?如何实现序列化?...2字节流与字符字节字符用法几乎完成全一样,区别在于字节字符流所操作数据单元不同,字节流操作单元是数据单元是8位字节字符流操作是数据单元为16位字符为什么要有字符流?...字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高。字符流本身就带有缓冲区,缓冲字符流相对于字符流效率提升就不是那么大了。详见文末效率对比。...sb.toString() } } 4字符流便捷类 Java提供了FileWriterFileReader简化字符读写,new FileWriter等同于new OutputStreamWriter...BufferedInputStream:缓冲流,对节点流进行装饰,内部会有一个缓存区,用来存放字节,每次都是缓存区存满然后发送,不是一个字节或两个字节这样发送,效率更高。

45730

为什么要进行URL编码!!!

针对“name1=value1&name2=value2”我们来说一下客户端到服务端概念上解析过程: 上述字符串在计算机中用ASCII吗表示为: 6E616D6531 3D...又如,Url编码格式采用是ASCII码,不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。...q=%61%62%63,实际上就等同于在google上搜索abc了。又如@符号在ASCII字符集中对应字节为0x40,经过Url编码之后得到是%40。...显然这并不是使用UTF-8字符集进行Url编码得到结果(在Google上搜索"中文",Url中显示是%E4%B8%AD%E6%96%87)。...另外,很多HTTP监视工具或者浏览器地址栏等在显示Url时候会自动Url进行一次解码(使用UTF-8字符集),这就是为什么当你在Firefox中访问Google搜索中文时候,地址栏显示Url包含中文缘故

5.9K30

为什么要进行 URL 编码???

针对“name1=value1&name2=value2”我们来说一下客户端到服务端概念上解析过程: 上述字符串在计算机中用ASCII吗表示为: 6E616D6531 3D 76616C756531...又如,Url编码格式采用是ASCII码,不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。...q=%61%62%63,实际上就等同于在google上搜索abc了。又如@符号在ASCII字符集中对应字节为0x40,经过Url编码之后得到是%40。...显然这并不是使用UTF-8字符集进行Url编码得到结果(在Google上搜索"中文",Url中显示是%E4%B8%AD%E6%96%87)。...另外,很多HTTP监视工具或者浏览器地址栏等在显示Url时候会自动Url进行一次解码(使用UTF-8字符集),这就是为什么当你在Firefox中访问Google搜索中文时候,地址栏显示Url包含中文缘故

1.1K20

刨根究底字符编码之十一——UTF-8编码方式与字节序标记

(注:这里所指编码空间并不是前文所提到编号空间Code Space,编号空间属于编号字符集CCS里概念,编码空间属于字符编码方式CEF里概念,两者不能等同;这里编码空间可理解为编码方式未来可扩展性...k)  字符串比较时strcmp()wcscmp()返回结果相同,因此使排序变得更加容易。 4....3. 许多Windows程序(包含记事本)会添加BOM到UTF-8编码格式文件中(至于为什么要添加BOM,可参看后续《微软跟联通有仇?》一文)。然而,在类Unix系统中,这种作法则不被建议采用。...对于已注册字符编码(这里字符编码实际为字符编码方式CEF)UTF-16UTF-32来说,则必须在文本开头使用BOM。 4. 不同编码字节序列中所使用字节序标记BOM本身字节序列呈现: ?...它相对于其他编码方式对英语更为友好,同样也对计算机语言(如C++、Java、C#、JavaScript、PHP、HTML等)更为友好。它在处理ASCII等常用字符集时很少会比UTF-16低效。 2.

1.4K30

oracle中varcharchar区别_char跟varchar

1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字全角等字符占两字节,数字,英文字符等都是一个字节2.VARCHAR2把空串等同于null处理,varchar仍按照空串处理...; 3.VARCHAR2字符要用几个字节存储,要看数据库使用字符集, 大部分情况下建议使用varchar2类型,可以保证更好兼容性。...CHAR长度是固定VARCHAR2长度是可以变化, 比如,存储字符串“abc”,对于CHAR (20),表示你存储字符占20个字节(包括17个空字符),同样VARCHAR2 (20)...则只占用3字节长度,20只是最大值,当你存储字符小于20时,按实际长度存储。...char类型保存定长字符串,最小长度为1字节(或字符数),最长2000字节(注意这里是字节不是字符数),如果不指定,则默认为1。

96431

Web开发须知:URL编码与解码

又如,Url编码格式采用是ASCII码,不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。...q=%61%62%63,实际上就等同于在google上搜索abc了。又如@符号 在ASCII字符集中对应字节为0x40,经过Url编码之后得到是%40。   ...但是对于 Unicode字符,escape编码方式是%uxxxx,其中xxxx是用来表示unicode字符4位十六进制字符。这种方式已经被W3C废弃 了。...显然这并不是使用UTF-8字符集进行Url编码得到结果(在Google上搜索"中文",Url中显示是%E4%B8%AD%E6%96%87)。   ...另外,很多HTTP监视工具或者浏览器地址栏等在显示Url时候会自动Url进行一次解码(使用UTF-8字符集),这就是为什么当你在Firefox中访问Google搜索中文时候,地址栏显示Url包含中文缘故

2.4K30

面试官昨天问我对base64理解,着实被问懵了

3字节有 24 个比特,对应于 4 个 base64 单元,即 3字节可由 4 个可打印字符来表示。相应转换过程如下图所示: ?...由图可知,Man (3字节)编码结果为 TWFu(4字节),很明显经过 base64 编码后体积会增加 1/3。Man 这个字符长度刚好是 3,我们可以用 4 个 base64 单元来表示。...但如果待编码字符串长度不是 3 整数倍时,应该如何处理呢?...以编码字符 A 为例,其所占字节数为 1,不能被 3 整除,需要补 2字节,具体如下图所示: ?...由上图可知,字符 A 经过 base64 编码后结果是 QQ==,该结果后面的两个 = 代表补足字节数。最后个 1 个 base64 字节块有 4 位是 0 值。

3.8K11

android okio使用方法,Android 开源框架 Okio 原理剖析「建议收藏」

1,概览 分析 Retrofit OkHttp 时不同,这次我们不是直接上来就开始看代码,我们先看一下它官方介绍,对它有一个感性认识,这也正是我们在进行技术选型时首先应该做事情。...Okio 吸收了 java.io 一个非常优雅设计:流(stream),流可以一层一层套起来,不断扩充能力,最终完成像加密压缩这样复杂操作。...就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象不是整个类添加一些功能。... BufferedSink 接口,便于使用(按照任意类型进行读写,BufferedSource 还能进行查找判等); 不再区分字节字符流,它们都是数据,可以按照任意类型去读写; 便于测试,Buffer...() / 2]; for (int i = 0; i < result.length; i++) { int d1 = decodeHexDigit(hex.charAt(i * 2)) << 4;

67810

c专题指针-----数组与指针关联

首地址就是起始地址,就是4字节中最开始第一个字节地址)。...那么我们在程序中只能通过&a来获取这个分配地址,却不能去用赋值运算符修改它。 4、小结: (1):&aa做右值时区别:&a是整个数组首地址,a是数组首元素 首地址。...类型相同就决定了每个数组元素占几个字节是相同(譬如int数组每个元素都占4字节,没有例外)。 (2)数组中元素其实就是地址相连接、占地大小相同一串内存空间。...从意义上来看,a&a[0]是数组首元素首地址,&a是整个数组首地址;从类型来看,a&a[0]是元素指针,也就是int *类型;&a是数组指针,是int (*)[5];类型。...(3):strlen是一个C库函数,用来返回一个字符长度(注意,字符长度是不计算字符串末尾'\0')。一定要注意strlen接收参数必须是一个字符串(字符特征是以'\0'结尾) 。

1K10

【nodejs】Iu002FO,Buffer,http模块,stream

上面四个例子里,阻塞非阻塞说明是大爷状态,同步非同步说明是水壶调用姿势。水壶能在烧好时候主动响起,就等同于我们异步定义,能在结束时通知主线程并且回调。...8:一种变长编码方案,使用 1~6 个字节来存储; // UFT-32:一种固定长度编码方案,不管字符编号大小,始终使用 4字节来存储; // UTF-16:介于 UTF-8 UTF-32...之间,使用 2 个或者 4字节来存储,长度既固定又可变。...([buf2, buf3]) console.log('~ buf4:', buf4, buf4.toString()); http模块 writeHead 可以同时书写 statusCode setHeader...// 二者合起来, Accept:text/xml; Content-Type:text/html ,即代表希望接受数据类型是xml格 式,本次请求发送数据数据格式是html

39030

刨根究底字符编码之八——Unicode编码方案概述

Unicode字符所有字符按照使用上频繁度划分为17个平面(Plane层面),每个平面上编号空间有2^16=65536个码点。 (笨笨阿林原创文章,转载请注明出处) 4....-16字符编码方式中将其长度由原来8位扩展为16位(注意,这里字符编码方式CEF还只是逻辑意义上码元序列,不是字符编码模式CES——物理意义上字节序列),而其他文化语言字符则全部重新统一编码...Set)两部分,分别以2字节4字节表示字符编号(即码点编号)。...(注意,UCS-2UCS-4只是表示字符编号字节数不同,与字符编码方式CEF中2字节4字节没有关系,也因此不能分别等同于Unicode编码方案中UTF-16UTF-32字符编码方式CEF,有不少文章中称两者等同...其中,UCS-2又被称为基本多语言平面BMP(Basic Multilingual Plane),与Unicode基本多语言平面BMP保持了一致;UCS-4格式用四个字节31位来表示一个字符码点编号

57720

彻底摆脱乱码困惑

1 个字节给了 ASCII;占 2字节给了拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文等;占 3字节给了大部分汉字,基本等同于 GBK,含 21000 多个汉字;占 4字节中日韩超大字符集里面的汉字...所以,汉字占三个字节这句话,应该说成 Unicode 字符集中大部分汉字,如果用 UTF-8 编码的话,是占 3字节 UTF-8 编码本身,是 1~4字节可变长度字符编码。...我们查 UTF-8 编码字典,发现你好两个字编码是“E4BDA0”、“E5A5BD”,我们编码输入。 好吧你说这哪是 2 进制啊,这不是 16 进制么。...如果我们重新用 GBK 编码写一个一模一样文件,再用 IE 打开,正常。这是为什么呢?原因很简单,IE 浏览器默认用 GBK 去解码一个 HTML。这又是一个潜规则。...0x32 2 字符 2 0011 0011 63 51 0x33 3 字符 3 0011 0100 64 52 0x34 4 字符 4 0011 0101 65 53 0x35 5 字符 5 0011

1.1K40

unicode、utf-8、ansi、gbk、gb2312编码详解

那就要仔细往下看了 ascii 很久以前,计算机制造商有自己表示字符方式。他们并不需要担心如何其它计算机交流,并提出了各自 方式来字形渲染到屏幕上。...于是扩展呗,把之前gb2312中没有利用位好好利用起来,就成了gbk,这又增加了20000多个汉字,但是咱们少数名族也要用电脑啊,于是有了后来 GB18030 GB2312GBK都是用两个字节来编码...表示其他更大符号, 可能需要3字节或者4字节,甚至更多,这里会出现几个问题: A.我们怎么知道是三个字节一起表示一个字符,还是说三个字节分别表示三个字符 B.之前一个ascii字符只需要一个字节,...:utf-8、utf-16、utf-32 utf-16是用两个或四个字节表示一个字符 utf-32使用四个字节表示一个字符 utf-8是可变长编码方案,它可以用1~4字节表示不同字符,显而易见,前面两种编码方案会浪费很多字节...UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 : http://www.cnblogs.com/malecrab/p/5300503.html 国外比较好一篇文章(推荐):

3.9K62

刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK

比如,当多字节字符与原先ASCII字符混用时: 1)要么原先ASCII字符重新编码为多个字节表示,以便与其他多字节字符统一起来(UTF-16、UTF-32等采用是这种方法); 2)要么保持ASCII...Unicode吸纳了许多遗留(legacy)编码,并且为了兼容性保留了所有字符。因此中文编码方案中这些全角字符也保留下来了,国家标准也仍要求字体软件都支持这些全角字符。...不过,半角全角字符关系在UTF-8、UTF-16等中不再是简单1字节2字节关系了。具体参见后文。 ——综合了知乎《中文输入法为什么会有全角半角区别?》...GBK编码框架(Code Scheme):其中GBK1收录除GB2312符号外增补符号,GBK2收录GB2312汉字,GBK3收录CJK汉字,GBK4收录CJK汉字增补汉字,GBK5为非中文字符集...在DBCS系列编码方案里,最大特点是两字节中文字符字节英文字符(ASCII字符)相兼容,可以并存于同一个文件内。 2.

2.2K10
领券