快速业务通道

Java中的字符集编码入门(四) 网页文件的编码 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

Java中的字符集编码入门(四) 网页文件的编码

时间:2011-06-22 BlogJava Jasper

接着上节的思路说,一个网页要想在浏览器中能够正确显示,需要在三个地方保持编码的一致:网页文件,网页编码声明和浏览器编码设置。

首先是网页文件本身的编码,即网页文件在被创建的时候使用什么编码来保存。这个完全取决于创建该网页的人员使用了什么编码保存,而进一步的取决于该人员使用的操作系统。例如我们使用的中文版WindowsXP系统,当你新建一个文本文件,写入一些内容,并按下ctrl+s进行保存的那一刻,操作系统就替你使用GBK编码将文件进行了保存(没有使用UTF-8,也没有使用UTF-16)。而使用了英文系统的人,系统会使用ISO-8859-1进行保存,这也意味着,在英文系统的文件中如果输入一个汉字,是无法进行保存的(当然,你甚至都无法输入)。

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

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

这就是我们所说的第二个位置,网页编码声明中的编码应该与网页文件保存时使用的编码一致。

而浏览器的编码设置实际上并不严格,就像我们第三节所说的那样,在浏览器中选择使用GB2312来查看,它实际上仍然会使用GBK进行。而且浏览器还有这样一种好习惯,即它会尽量猜测使用什么编码查看最合适。

我要重申的是,网页文件的编码和网页文件中声明的编码保持一致,这是一个极好的建议(值得遵循,会与人方便,与己方便),但如果不一致,只要网页文件的编码与浏览器的编码设置一致,也是可以正确显示的。

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

说了以上四节这么多,后面我们就来侃侃Java里的字符编码,你会发现有意思且挠头的事情很多,但一旦弄通,天下无敌(不过不要像东方不败那样才好)。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号