Eclipse Workspace編碼與網頁亂碼


   今天用eclipse(其實是Aptana)寫一個簡單測試網頁時,用瀏覽器打開網頁發現亂碼,HTML頁面頭是這么寫的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />

   注意上面的<meta>標簽,即我告訴瀏覽器當前頁面是用GBK編碼的。本以為一切都沒問題,但是用瀏覽器打開就出現亂碼了,如下:

   為什么會這樣呢?

   我想了一會覺得應該查看下Eclipse默認的字符編碼格式,通過Windows->Preferences->Workspace->Text file encoding打開,如下:

   可以看到我的eclipse默認設置文件編碼格式為UTF-8。

   那這個跟亂碼有關系嗎?

   當然有關系,問題恰出於此。下面我來仔細說下。

1、eclipse設定了文本文件默認編碼方式為UTF-8,所以我編寫的HTML頁面中的中文也都是按UTF-8進行編碼的
2、<meta>頭標簽設置了charset屬性,只是告訴瀏覽器當前HTML頁面是按GBK編碼的
3、瀏覽器解析頁面時,發現<meta>標簽指定了字符編碼為gbk。而根據第一步我們知道HTML頁面實際上是按UTF-8編碼的,又GBK編碼和UTF-8編碼不是兼容的,所以自然就出現亂碼了

   真相大白后,發現原理很簡單。我只需要修改<meta>標簽的charset值為utf-8,就沒有亂碼了。這還能解釋各位包括我自己以前遇到的一個現象:從網上下別人的代碼文件,拷貝到eclipse下出現亂碼。原因也是別人的代碼文件的編碼方式和eclipse默認的文件編碼方式不一致。

   這個例子給我們的啟發是:

要想最大可能地避免亂碼,最簡單的方法是保證所有可以設置的地方編碼一致。比如這里我設置<meta>標簽的charset屬性值為utf-8就不會出現這種問題了。

   順便再提下,我們也可以單獨為每個工程項目設置字符編碼,如下(Sudoku項目):

   而且也可以單獨為某個文件設置字符編碼格式:

   eclipse的全局字符編碼、項目的字符編碼、某個文件的字符編碼,優先級由低到高。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM