淺談ASCII 、ISO8859-一、GB23十二、GBK、Unicode、UTF-8 的區別。

淺談ASCII 、ISO8859-一、GB23十二、GBK、Unicode、UTF-8 的區別。瀏覽器

  首先,先科普一下什麼是字符編碼。字符是指一種語言中使用的基本實體,好比英文中的26個英文字母,標點符號,以及中文中的一個個漢字,均可以算作一個字符。而字符編碼旨在將這些字符正確錄入計算機中,轉換成0101形式的計算機識別碼,嚴格意義來說字符編碼實際上是一種規範。遵照這種規範的錄入編碼,會在編碼解碼中獲取正確的表示,不會出現亂碼。
  ASCII:計算機發明自美國,天然最初的字符編碼規範是以英文爲基礎的。錄入英文字符編碼標準:ASCII(American Stardard Code for Information InterChange 美國信息互換標準代碼),單字節編碼,使用單字節8位 前127個存儲英文字母及標點符號。
  ISO8859-1:iso組織在ASCII基礎上作的擴展,也是單字節編碼。
  GB2313:隨着發展,各國都須要使用各國的語言使用計算機,相應的,我國大陸地區採用雙字節 高低位字節的方式,存儲簡體中文。當存儲中文字符時,高低位都存放大於127的數字,當讀取高位字節時,若大於127,則認爲是中文字符,將讀取雙字節進行識別,若小於127,則認爲是英文字符,單字節識別。另外,GB2313在大於127位的編碼庫也提供了中文符號的編碼,故英文標點符號稱作半角符號,中文標點符號稱做全角符號。
  GBK:對GB2313的拓展,雙字節編碼,區別是當存儲中文字符時,高位存放大於127的數字,低位再也不是大於127的數字,將127以前的數字也囊括了。GBK將繁體中文也囊括進來。
  Unicode:針對各個國家都使用不一樣的編碼機制,iso組織又站了出來,對全球編碼作了整個的囊括,推出了Unicode。Unicode,雙字節編碼,對ASCII採起高位補零的方式拓展。
  UTF-8:因爲Unicode是一組編碼映射,即一個字符映射一個16進制數字的形式。隨着互聯網發展,爲了節省資源(不管是硬盤存儲仍是流量),相應的對Unicode進行了不一樣的實現,這就是utf-8。UTF-8的編碼規則及詳細的映射Unicode詳見另外一篇文章:  Unicode 和 UTF-8 有何區別 :https://blog.csdn.net/u013314786/article/details/50979627
  最後,嚴格意義來說,編碼之間沒法轉碼,只有使用正確的編碼規範才能不出現亂碼的問題。統一編碼規範,開發時文件建立、代碼使用什麼編碼,並標識文件編碼格式,訪問時根據不一樣的編碼格式,使用對應編碼纔是王道。遇到編碼問題,從應用程序代碼編碼設置、jsp頁面編碼設置、應用部署服務器編碼設置、應用部署環境系統編碼設置、瀏覽器編碼設置等這些方面入手,查找是哪一環節的編碼設置錯誤。
服務器

相關文章
相關標籤/搜索