HTML中,content="text/html; charset=gb2312";XML中 encoding="UTF-8"。其实都是指的 “程序员告诉别人,我的此html文档所使用的字符编码,但是

HTML中,content="text/html; charset=gb2312";XML中 encoding="UTF-8"

 

其实都是指的 “编码集,而不是字符集”,即指的“如何对字符进行编码;而不是目前使用何种字符集”,更确切的讲 指的 “程序员告诉别人,我的此html文档所使用的字符编码,但是,此html使用的到底是不是这个编码(虽然程序员告诉别人,‘我用的是这种编码’,但是,要知道gcd还说‘为人民服务’呢),答案是不一定,因为此html文档的编码 是ctrl+s按下的瞬间 OS 所使用的编码

 

所以,XML中的 encoding 是更贴切的

 

实际上XML文件中 encoding 部分与 HTML文件中的 charset 中一样,只是告诉“别人”(这个别人可能是浏览你的页面的人,可能是浏览器,也可能是处理你页面的程序,别人需要知道这个,因为除非你告诉他们,否则谁也猜不出你用了什么编码, 仅通过文件的内容判断不出使用了什么编码,这是真的)这个文件使用了什么编码,唯独操作系统不会搭理,它仍然会按自己默认的编码方式保存文件(再一次的, 在我们的中文WindowsXP系统中,使用GBK保存)。至于这个文件是不是真的 按 encoding 或者 charset 所声明的那种编码 保存的呢?答案是一定!

 

例如新浪的页面就“声称”他是用GB2312编码保存的,但实际上却是GBK,也有无数的二把刀程序员(比如说正在记录这段话的我)用系统默认的GBK保存了他们的XML文件,却在他们的encoding中信誓旦旦的说是UTF-8的。

 

 

 

只要 网页文件的编码(即保存这个html文档时,OS的默认编码 或者 保存时选择的编码) 和 浏览器的编码设置 一致,则此网页就可以被正确显示

 

网页文件的编码(即保存这个html文档时,OS的默认编码 或者 保存时选择的编码) 和 网页文件中声明的编码(charset=gb2312) 保持一致,这是一个极好的建议(值得遵循,会与人方便,与己方便),但如果不一致,只要 网页文件的编码(即保存这个html文档时,OS的默认编码 或者 保存时选择的编码) 与 浏览器的编码设置一致,也是可以正确显示的。

例如有这样一个页面,它使用GBK保存,但声明自己是UTF-8的。这个时候用浏览器打开它,首先会看到乱码,因为这个页面“告诉”浏览器用UTF-8显示,浏览器会很尊重这个提示,于是乱码一片。但当手工把浏览器设为GBK之后,显示正常。

 

本来gb2312,改成UTF-8后,由于浏览器使用UTF-8浏览,所以,显示乱码啦

 

 手动将浏览器编码设置为GBK,则显示又正确啦

 

 

 

阅读更多
个人分类: JavaScript
上一篇Internet Explorer中“检查所存网页的较新版本”究竟影响什么?
下一篇线程与working memory, main memory交互 和 JVM的执行指令 的关系
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭