[IT]HTML网页源码的字符编码(charset)解释

时间:2024-04-09 14:50:45

当你通过浏览器,打开某个网站,即某个url地址的时候,你所能正常看到网页的内容,各种文字,都可以正常显示,且没有显示乱码。

此过程,涉及到,浏览器帮你正确解析HTML源码,其中涉及到HTML网页源码的字符编码处理方面的问题。

和字符编码处理相关的大概逻辑是:

1.浏览器访问对应的url地址,并获取对应的HTML(或者,以及,其他的css,javascript等)网页源码

2.浏览器识别解析HTML源码内容

其中包含了解析HTML的头部(head),找到对应的charset和Content-type

head中把Content-type设置为“text/html”。head让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下载它。

然后把根据charset所指示的字符编码类型,去解码对应的HTML内容,显示对应的文字,以保证不是乱码,可以正确的显示文字信息;

举个例子:

当我们通过浏览器,去打开对应的url地址:http://sports.sohu.com/

浏览器可以正常显示对应网页内容:

[IT]HTML网页源码的字符编码(charset)解释

而此时内部发生的过程是:

1.浏览器去访问url地址:http://sports.sohu.com/去获得对应的HTML源码。(中间很有很多处理过程,省略,具体参考:当你在浏览器地址栏输入一个URL后回车,将会发生的事情?

2.然后解析HTML源码并显示给用户

其中包括了解析HTML的head,知道content=text/html,charset=gb2312,然后用gb2312编码格式去解码,HTML形式呈现,然后就可以正常显示HTML中的内容,确保不是乱码了。

[IT]HTML网页源码的字符编码(charset)解释

上面截图就是网页源代码,我们可以很清楚的看到我们要的信息。


注意:

1.之前就看到某处说过,有个别的html网页本身做的不规范,导致本身自己声明的是某种编码类型,

但是实际上,并不全是该类型的编码,导致你去按照其所声明的编码去解析,有时候仍会出现乱码。

比如,其html中明明写的是charset=gb2312,但是实际上,其部分字符是属于GBK的,导致你按照gb2312去解码,有些字符仍会是乱码,

而安装gbk去解码,就全都正常显示了,没有乱码了。即实际上应该是charset=gbk。


常见的HTML编码类型:

国内的网站,尤其是以前建的,好像很多还是GB2312(charset=gb2312),或者是GBK(charset=gbk)

但是越来越多的,都是采用兼容性更好的,包含字符更多的UTF-8编码的了(charset=utf-8)

国外的完整,如果只是某种语言的,比如英文的,好像也有采用iso8859-1的(charset=iso8859-1),同样,更多的网站,还是采用的是utf-8的。

总结:

  • 国内外的多数网站,都是采用charset=utf-8
  • 部分国外网站采用charset=gb2312或charset=gbk
  • 部分国外网站采用某种自己所属语言的编码,比如charset=iso8859-1