首页
学习
活动
专区
工具
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 值。

2.4K20

【基础知识】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.9K21
  • 刨根究底字符编码之十三——UTF-16编码方式

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

    1K41

    MySQL模糊查询用法大全(正则、通配符、内置函数等)

    REGEXP中的正则匹配 : [] 3-3. 字符类匹配(posix) 3-4. [:和[:>:] 四、总结 ---- 一、MySQL通配符模糊查询(%,_) 1-1....like操作符:LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较;但如果like后面没出现通配符,则在SQL执行优化时将 like 默认为 “=”执行 注意: 如果在使用...,而不是带有"%"和"_"的指定数据。...3-4. [:和[:>:] 上面的字符类中有两个比较特殊的,这两个是关于位置的,[:的开始,[:>:]匹配词的结束,它们和 ^、$ 不同。...[[::]] 分别匹配一个单词开头和结尾的空的字符串,这个单词开头和结尾都不是包含在alnum中的字符也不能是下划线。

    12.8K44

    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.9K90

    为什么要进行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包含中文的缘故

    6.5K40

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

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

    51830

    为什么要进行 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-16和UTF-32来说,则必须在文本开头使用BOM。 4. 不同编码的字节序列中所使用的字节序标记BOM本身的字节序列呈现: ?...它相对于其他编码方式对英语更为友好,同样也对计算机语言(如C++、Java、C#、JavaScript、PHP、HTML等)更为友好。它在处理ASCII等常用字符集时很少会比UTF-16低效。 2.

    1.7K30

    oracle中varchar和char的区别_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。

    1.1K31

    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.6K30

    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;

    79510

    面试官昨天问我对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 值。

    4.5K11

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

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

    1.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。

    41330

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

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

    89520

    彻底摆脱乱码的困惑

    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.3K40

    刨根究底字符编码之五——简体汉字编码方案(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.

    3.9K10

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

    那就要仔细往下看了 ascii 很久以前,计算机制造商有自己的表示字符的方式。他们并不需要担心如何和其它计算机交流,并提出了各自的 方式来将字形渲染到屏幕上。...于是扩展呗,把之前gb2312中没有利用的位好好利用起来,就成了gbk,这又增加了20000多个汉字,但是咱们少数名族也要用电脑啊,于是有了后来的 GB18030 GB2312和GBK都是用两个字节来编码的...表示其他更大的符号, 可能需要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 国外比较好的一篇文章(推荐):

    7.3K83
    领券