今天用eclipse(其实是Aptana)写一个简单测试网页时,用浏览器打开网页发现乱码,HTML页面头是这么写的:
注意上面的<meta>标签,即我告诉浏览器当前页面是用GBK编码的。本以为一切都没问题,但是用浏览器打开就出现乱码了,如下:
为什么会这样呢?
我想了一会觉得应该查看下Eclipse默认的字符编码格式,通过Windows->Preferences->Workspace->Text file encoding打开,如下:
可以看到我的eclipse默认设置文件编码格式为UTF-8。
那这个跟乱码有关系吗?
当然有关系,问题恰出于此。下面我来仔细说下。
1、eclipse设定了文本文件默认编码方式为UTF-8,所以我编写的HTML页面中的中文也都是按UTF-8进行编码的2、 头标签设置了charset属性,只是告诉浏览器当前HTML页面是按GBK编码的3、浏览器解析页面时,发现 标签指定了字符编码为gbk。而根据第一步我们知道HTML页面实际上是按UTF-8编码的,又GBK编码和UTF-8编码不是兼容的,所以自然就出现乱码了
真相大白后,发现原理很简单。我只需要修改<meta>标签的charset值为utf-8,就没有乱码了。这还能解释各位包括我自己以前遇到的一个现象:从网上下别人的代码文件,拷贝到eclipse下出现乱码。原因也是别人的代码文件的编码方式和eclipse默认的文件编码方式不一致。
这个例子给我们的启发是:
要想最大可能地避免乱码,最简单的方法是保证所有可以设置的地方编码一致。比如这里我设置 标签的charset属性值为utf-8就不会出现这种问题了。
顺便再提下,我们也可以单独为每个工程项目设置字符编码,如下(Sudoku项目):
而且也可以单独为某个文件设置字符编码格式:
eclipse的全局字符编码、项目的字符编码、某个文件的字符编码,优先级由低到高。