- 總結
歷史原因
雖然現在呈現utf大一統的趨勢,但是個個編碼的特點還是有必要了解一下,以方便日常使用和理解
1. ascll:
ASCII收錄了空格及94個“可印刷字符”,足以給英語使用。但是,其他使用拉丁字母的語言(主要是歐洲國家的語言),都有一定數量的附加符號字母
- iso8859-1:
ISO-8859-1編碼是單字節編碼,向下兼容ASCII,ISO-8859-1收錄的字符除ASCII收錄的字符外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字符號。歐元符號出現的比較晚,沒有被收錄在ISO-8859-1當中。
因爲ISO-8859-1編碼範圍使用了單字節內的所有空間,在支持ISO-8859-1的系統中傳輸和存儲其他任何編碼的字節流都不會被拋棄。換言之,把其他任何編碼的字節流當作ISO-8859-1編碼看待都沒有問題。這是個很重要的特性,MySQL數據庫默認編碼是Latin1就是利用了這個特性。ASCII編碼是一個7位的容器,ISO-8859-1編碼是一個8位的容器。
Latin1是ISO-8859-1的別名,有些環境下寫作Latin-1。
iso8859-1編碼表示的字符範圍很窄,無法表示中文字符。但是,由於是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用 iso8859-1編碼來表示。而且在很多協議上,默認使用該編碼。比如,雖然"中文"兩個字不存在iso8859-1編碼,以gb2312編碼爲例,應該是"d6d0 cec4"兩個字符,使用iso8859-1編碼的時候則將它拆開爲4個字節來表示:“d6 d0 ce c4”(事實上,在進行存儲的時候,也是以字節爲單位處理的)。而如果是UTF編碼,則是6個字節"e4 b8 ad e6 96 87"。很明顯,這種表示方法還需要以另一種編碼爲基礎(作爲通用傳輸編碼)
- 不同編碼的中英文字節比例
gbk 2:1
中文:英文
utf 3:1
中文:英文
如有不同意見和建議歡迎留言或者私信