中文亂碼問題產生的由來
在計算機中,只有二進制的數據,不管數據是在內存中,還是在外部設備上。
對于我們所看到的字符,也是以二進制數據的形式存在的。不同的字符對應的
二進制數的規則,就是字符的編碼。字符編碼的集合稱為字符集。
常用的字符集
1 ASCII
2 ISO8859-1
3 GB2312和GBK
每個國家(或者區域)都規定了計算機信息交換用的字符編碼集,這就造成了
交流上的困難。想象一下,你發送一封中文郵件給一位遠在西班牙的朋友,當郵件
通過網絡發送出去的時候,你所書寫的中文字符會按照本地的字符集GBK轉換成二進制
編碼數據,然后發送出去。當你的朋友接收以郵件(二進制數據)后,查看信件時,會
按照他所用的系統的字符集,將二進制數據解碼為字符,然而由于兩種字符集之間編碼
規則的不同,導致轉換出現亂碼。這是因為,在不同的字符集之間,同樣的數字可能對
應了不同的符號,也可能在另一種字符集中,該數字沒也對應的符號。
為解決上述問題,統一全世界的字符編碼,由Unicode協會制定并發布了Unicode編碼。
4 Unicode
5 UTF-8
對亂碼產生過程的分析
字符數據在各種不同的字符集之間轉換時,就有可能會出現亂碼。
xml處理器在沒有被預先通知的情況下會默認文檔數據為UTF-8格式。
這樣在你書寫xml文檔時,就存在了UTF-8字符集和本地字符進行轉換的過程。
當向xml文檔中寫入數據的時候,需要將本地字符集編碼的數據轉換為UTF-8
,而在輸出字符數據的時候,則需要將UTF-8編碼轉換為本地字符集編碼。
從上述的過程來看,寫入和輸出的過程是可逆的。理應不會出現中文亂碼問題
然而,實際應用的情形,比上述的過程要復雜的多。在WEB應用中,通過都包括
瀏覽器、WEB服務器、WEB應用程序和數據庫等部分,每一部分的都有可能使用不
同的字符集,從而導致數據在各種字符之間轉換時,出現了亂碼問題。
posted on 2007-09-20 21:46
Ke 閱讀(4456)
評論(0) 編輯 收藏 所屬分類:
encoding