文本文件編碼轉換器

文本文件也有編碼?卻實如此。什麼是編碼呢?編碼是指不同國家的語言在計算機中的一種存儲和解釋規範,如,我們常說的ANSI是一種存儲方式,ASCII是一種解釋規範。

最初,Internet上只有一種字符集——ANSIASCII字符集(American Standard Code for Information Interchange,“美國信息交換標準碼),它使用7 bits來表示一個字符,總共能表示128個字符,後來IBM公司在此基礎上進行了擴展,用8bit來表示一個字符,總共可以表示256個字符,充分利用了一個字節所能表達的最大信息。後來派生了,的字符集,如:UTF-8Unicode等等,正式的名稱爲MBCSMulti-Byte Chactacter System,多字節字符系統),通常也稱爲ANSI字符集。

UNICODEUTF-8,由於每種語言都制定了自己的字符集,導致最後存在的各種字符集實在太多,在國際交流中要經常轉換字符集非常不便。因此,產生了Unicode字符集,它固定使用16 bits(兩個字節)來表示一個字符,共可以表示65536個字符,標準的Unicode稱爲UTF-16(UTF:UCS Transformation Format )。後來爲了雙字節的Unicode能夠在現存的處理單字節的系統上正確傳輸,出現了UTF-8,使用類似MBCS的方式對Unicode進行編碼。(Unicode字符集有多種編碼形式),例如“連通”兩個字的Unicode標準編碼UTF-16 (big endian)爲:DE 8F1A 90,而其UTF-8編碼爲:E8 BF 9E E9 80 9A,就是說,UTF-8編碼中,一個字符佔三個字節。

因此,爲了標示每種編碼格式,在文件頭用特殊字節表示每種編碼,當一個軟件打開一個文本時,要做的第一件事是檢測文件頭標識,確定這個文本是使用哪種字符集的哪種編碼保存的。下表爲幾種文本編碼的文件頭標識:

編碼格式

文件頭

ANSI

UTF-8

EF BB BF

Unicode(little endian)

FE FF

Unicode(big endian)

FF FE

 

       在實際開發應用中,我們處理文本類型的文件,如:jspaspxphpjs等等程序源文件時,要注意文件保存時的編碼,如果用不同的開發工具,可能保存的格式會各不相同。如在VS2005開發環境裏,當改變 aspx 文件中 head區裏的

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

字符集設置(如把 gb2312 改成 utf-8),在保存時,VS2005會自作聰明的改變你的文件的編碼格式。當用不能正確識別文本編碼格式的其它開發工具(如firework)打開時,就會出現亂碼,因爲不能正確識別文本文件編碼的工具在打開時仍然按 ANSI字符格式顯示。這樣就會導致問題的出現。

       Windows98以下的操作系統,默認是按ANSI格式處理的,其操作系統自帶的記事本沒有識別文本文件編碼的功能,如果打開了一個Unicode編碼的文本文件,將會出現亂碼。而Windows2000以上的操作系統默認是按Unicode格式處理的,而且操作系統自帶的記事本能夠正確識別不同格式的文件文件,打開時都會顯示正常。有一點要注意:在Windows2000以上的操作系統中,就算是文本文件格式是ANSI的,操作系統處理時也要先轉爲Unicode格式再處理。所以,建議大家在Windows2000以上的操作系統中處理文本文件時,按Unicode格式保存,這樣,可節省操作系統識別及轉換的時間。

       我搞了一個小工具軟件,用於識別文本文件是什麼編碼格式的,以及可以批量轉換指定目錄下指定後綴文件的編碼,下載地址:http://download.csdn.net/source/408426/ 內含全部源碼(Delphi7)及可執行程序,歡迎大家使用。

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章