【HTML基础笔记】之【常用编码】

HTML 常用编码

4.1 HTML 实体编码

HTML实体编码,也即HTML中的转义字符

  • 在 HTML 中,某些字符是预留的,例如在 HTML 中不能使用小于号<和大于号>,这是因为浏览器会误认为它们是标签。
  • 如果希望正确地显示预留字符,我们必须在HTML源代码中使用字符实体(character entities)。
  • HTML 中的常用字符实体是不间断空格。(注意:实体名称对大小写敏感!)
  • 字符实体类似这样:&entity_name; 或者 &#entity_number;如需显示小于号,我们必须这样写:< 或 <

常见的实体编码:

显示结果 描述 实体名称 实体编号
  空格 &nbsp; &#160;
< 小于号 &lt; &#60;
> 大于号 &gt; &#62;
& 和号 &amp; &#38;
" 引号 &quot; &#34;
撇号 &apos; (IE不支持) &#39;

4.2 HTML 字符集

  • 如果需要正确地显示HTML页面,浏览器必须知道使用何种字符集。
  • 万维网早期使用的字符集是ASCII。ASCII支持 0-9 的数字,大写和小写英文字母表,以及一些特殊字符。
  • 除了ASCII字符集,后来还出现了ISO字符集和Unicode标准。

4.2.1 ASCII 字符集

  • ASCII 字符集被用于因特网上不同计算机间传输信息。ascii码是字符的整数形式,是另一种标准码,任意一个字符都对应一个整数,将这个字符转换成ascii码是为了让你知道这个字符对应的数值是多少,其实转化不转化意义不大,因为他们在内存中的存储是一样的,都是0和1构成的相同的机器码,运算时你可以用字符直接运算,也可以用ascii码运算,结果是一样的。
  • 不管是ascii码还是字符,都是显示出来方便我们看的,它们本质上是一组二进制码(机器码),字符和它的ascii码根本就是一回事,只是表现形式不同而已,计算机内部运算使用它的二进制,而你显示器上看到的是字符或ascii码。
  • ASCII ,它的全称是"美国信息交换标准代码"。它设计于60年代早期,是计算机和诸如打印机、磁带驱动器之类的硬件设备的标准字符集。
  • ASCII 是7比特字符集,包含了128个不同的字符值。
  • ASCII 支持0-9的数字,A-Z大写和小写英文字母,以及一些特殊字符。
  • 通常需要时就到ASCII码对照表中进行转换,或者到在线转换网站进行编码。

以下是常用的ASCII码对照表:
【HTML基础笔记】之【常用编码】

4.2.2 ISO字符集

  • ISO 字符集是国际标准组织 (ISO) 针对不同的字母表/语言定义的标准字符集。
  • 而国际标准化组织(International Organization for Standardization,简称为ISO)是标准化领域中的一个国际性非*组织。

下面列出了世界各地使用的不同字符集:
【HTML基础笔记】之【常用编码】

4.2.3 Unicode标准

  • 由于上面列出的字符集都有容量限制,而且不兼容多语言环境,Unicode联盟开发了 Unicode 标准。
  • Unicode标准涵盖了世界上的所有字符、标点和符号。不论是何种平台、程序或语言,Unicode 都能够进行文本数据的处理、存储和交换。
  • Unicode联盟开发了Unicode标准。他们的目标是用标准的Unicode转换格式 (UTF) 来取代现有的字符集。
  • Unicode标准已经获得了成功,在 XML、Java、ECMAScript (JavaScript)、LDAP、CORBA 3.0、WML 中,Unicode已经得到了实现。在许多操作系统以及所有的现代浏览器中,Unicode同样得到了支持。Unicode联盟与领导性的标准发展组织进行合作,比如 ISO、W3C 以及 ECMA。
    Unicode 可以被不同的字符集兼容。

最常用的编码方式是 UTF-8 和 UTF-16:

字符集 描述
UTF-8 UTF8中的字符可以是1-4个字节长。UTF-8可以表示Unicode标准中的任意字符。UTF-8向后兼容 ASCII。UTF-8是网页和电子邮件的首选编码。
UTF-16 16比特的Unicode转换格式是一种Unicode可变字符编码,能够对全部Unicode指令表进行编码。UTF-16主要被用于操作系统和环境中,比如微软的Windows 2000/XP/2003/Vista/CE以及Java和.NET字节代码环境。

4.3 HTML URL编码

  • URL编码是一种浏览器用来打包表单输入的格式。
  • 浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。
  • 那为什么需要进行URL编码呢?
    • 我们都知道Http协议中参数的传输是"key=value"这种键值对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割。如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。所以这时候就需要通过URL编码进行数据分离从而提取有用信息。
    • URL编码只是简单的在特殊字符的各个字节前加上%,例如,我们对上述会产生奇异的字符进行URL编码后结果:“name1=va%26lu%3D”,这样服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。
  • URL编码的原则就是使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。

4.4 HTML Base64编码

  • Base64 是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
  • Base64 编码是从二进制到字符的过程,可用于在HTTP 环境下传递较长的标识信息。采用Base64 编码具有不可读性,需要解码后才能阅读。
  • Base64 由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。
  • 其实在日常生活中,Base64编码无处不在。X.509公钥证书也好,电子邮件数据也好,经常要用到Base64编码,那么为什么要作一下这样的编码呢?
    • 我们知道在计算机中的字节共有256个组合,对应就是ascii码,而ascii码的128~255之间的值是不可见字符。而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。
    • 对证书来说,特别是根证书,一般都是作Base64编码的,因为它要在网上被许多人下载。电子邮件的附件一般也作Base64编码的,因为一个附件数据往往是有不可见字符的。
  • 那么Base64到底是怎样编码的呢?
    • 简单来说,任何一个数据无非可以看作一个比特流,如01000100010011101100111010111100011001010…那么我们取6个比特为一组,计算它的ascii值,得到一个字符,这个字符肯定是可见字符,好,把它对应的字符写出来,再取6个比特,再次计算它的ascii值,如此下去,直到最后,就完成了编码。
上一篇:Mysql优化(1) 存储引擎、数据类型、字符集


下一篇:Qt 字符编码转换(UTF-8 转换为 GBK)