2009年11月6日 星期五

編碼

我對編碼的認識, 就放這囉, 大多是從網路收集整理低


以前電腦的編碼 只有8位

Unicode是由於傳統的字元編碼方式的侷限性而產生的,例如 ISO 8859 所定義的字元雖然在不同的國家中廣泛地使用,可是在不同國家間卻經常出現不相容的情況。
在文字處理方面,Unicode的功用是為每一個字元提供一個唯一的代碼(即一組數字),而不是一種字形

為了使Unicode與已存在和廣泛使用的舊有編碼互相兼容,尤其是差不多所有電腦系統都支援的基本拉丁字母部分,
所以Unicode 的首256字元仍舊保留給ISO 8859-1 所定義的字元,使既有的西歐語系文字的轉換不需特別考量

在表達一個 Unicode 的字元時,通常會用「U+」然後緊接著一組十六進位的數字來表示這一個字元。







補充:
在基本多文種平面(Basic Multilingual Plane,簡稱 BMP)
裏的所有字元,只要使用四位十六進制數(例如 U+4AE0,共支持六萬多個字元)來表示,但在 BMP 以外的字元則需要使用五位或六位十六進制數了。


ASCII就只包含拉丁字母
ISO 8859-1(Latin-1) 是個8位字符集,它以ASCII為基礎,在空置的0xA0-0xFF的範圍內,加入192個字母及符號
Unicode (這只是一種編碼方式, 非實現) : 使用16位的編碼空間。也就是每個字元佔用2個位元組。這樣理論上一共最多可以表示 2的16次方 , 即 65536 個字元
    unicode的實現 :
        
    1.UTF-8 (Unicode 的實現方式稱為Unicode轉換格式 Unicode Translation Format,簡稱為 UTF)
        如果一個僅包含基本7位ASCII字元的 Unicode 文件,如果每個字元都使用2位元組的原 Unicode 編碼傳輸,其第一位元組的8位始終為0。這就造成了比較大的浪費。
        對於這種情況,可以使用 UTF-8 編碼,這是一種變長編碼,它將基本7位ASCII字元仍用7位編碼表示,佔用一個位元組(首位補0)
                而遇到與其他 Unicode 字元混合的情況,將按一定演算法轉換,每個字元使用1-3個位元組編碼,並利用首位為0或1進行識別
    2.UTF-16
    3.BIG5








String sr = new URLCodec().encode("小胖", "utf-8");

0 意見: