日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编码方式 / ASCII、UNICODE、UTF-8、ANSI

發(fā)布時間:2024/10/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编码方式 / ASCII、UNICODE、UTF-8、ANSI 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、ASCII

  • 全稱:American Standard Code for Information Interchange
  • 占用 1 個字節(jié)。
  • 共可以表示 128 個字符,因為最前面那一位始終為 0 。
  • 程序員必背:
    字符ASCII碼
    ‘0’48
    ‘A’65
    ‘a(chǎn)’97
  • 二、UNICODE (Universal Code)

    Unicode 只是一個符號集,它只規(guī)定了字符與二進制代碼的對應(yīng)關(guān)系,卻沒有規(guī)定這個二進制代碼存儲方式。也就是說有的字符可能占一個字節(jié),有的可能占用 2 個、3 個或者更多。因為計算機無法知道內(nèi)存中三個字節(jié)代表是一個字符還是兩個還是三個,所以最好能夠統(tǒng)一字節(jié)數(shù)目,但是如果統(tǒng)一為 3 個字節(jié)的話,ASCII碼字符對應(yīng)的二進制前面兩個字節(jié)都得填充 0,這對存儲空間是一個極大的浪費。為了解決上述問題,出現(xiàn)了很多 unicode 的很多實現(xiàn)方法,例如:utf-8、utf-16、utf-32。

    三、UTF-8

    1、全稱:UCS Transformation Format 8bit
    2、Unicode 編碼范圍是:0-0x10FFFF。

    這是一種占用的字節(jié)可以變長的編碼方式,這個方案的意思以 8 位為單位來標(biāo)識文字。編碼規(guī)則如下。

    Unicode 編碼(16進制)UTF-8 字節(jié)流(二進制)
    000000 - 00007F0XXXXXXX  
    000080 - 0007FF110XXXXX 10XXXXXX
    000800 - 00FFFF1110XXXX 10XXXXXX 10XXXXXX
    010000 - 10FFFF11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

    (1)對于單字節(jié)的字符,第一位為 0,其他位為 unicode 編碼(與ASCII相同)。
    (2)對于多字節(jié)(n)的字符,從左往右數(shù),第一個字節(jié)的前 n 位為,第(n+1)位為 0,后面的字節(jié)的前兩位分別是1和0,其他各位依次填入 UNICODE 編碼,剩余位置填 0 。
    栗子:

    字符“人”的 unicode 編碼為 0x4eba,其二進制為100111010111010,由此可知其一共占用了16位,故UTF-8的實現(xiàn)方法是:11100100 10111010 10111010。

    上述中,雙星號括起來的部分為unicode編碼,其他部分為UTF-8的規(guī)則位。

    四、UTF-16、UTF-32

    任何字符都是使用 2 個字節(jié)或者 4 個字節(jié)存儲。

    上述字符“人”的 UTF-16 的是實現(xiàn)方式為 100111010111010 。

    上述字符“人”的 UTF-32 的是實現(xiàn)方式為 0000000000000000100111010111010 。

    五、UTF-8 和 UTF-16 的優(yōu)缺點

  • 當(dāng)字符的 unicode 編碼是單個字節(jié)時,用 UTF-8 合適,因為向下兼容ASCII碼,占用空間小。
  • 當(dāng)字符的 unicode 編碼是多個字節(jié)時,用 UTF-16 或者 UTF-32 合適,因為節(jié)省空間(少去了 UTF-8 的規(guī)則位)。
  • UTF-8 容錯率較低,因為在解碼時需要參照字節(jié)開始位,若文件傳輸過程中開始位傳輸錯誤,就可能導(dǎo)致后面所有的位就亂碼。而 UTF-16 和 UTF-32 則不會,因為不需要參照字節(jié)開始位,某一位傳輸錯誤,不影響后續(xù)字符的解碼。
  • UTF-8 編碼容量更大,更加靈活,可以滿足現(xiàn)存的所有的字符的要求。UTF-16 則只能編碼 65536 個字符,使用其時不得不考慮有的字符無法編碼的問題。
  • UTF-16 要考慮大小端字節(jié)序的問題,UTF-8 則不用。
  • 六、ANSI 編碼

    不同的國家和地區(qū)制定了不同的標(biāo)準(zhǔn),由此產(chǎn)生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的編碼標(biāo)準(zhǔn)。這些使用多個字節(jié)來代表一個字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文? Windows 操作系統(tǒng)中,ANSI 編碼代表 GBK 編碼;在繁體中文 Windows 操作系統(tǒng)中,ANSI編碼代表 Big5;在日文 Windows 操作系統(tǒng)中,ANSI 編碼代表 Shift_JIS 編碼。ANSI 編碼表示英文字符時用一個字節(jié),表示中文用兩個或四個字節(jié)。

    ?

    (SAW:Game Over!)

    總結(jié)

    以上是生活随笔為你收集整理的编码方式 / ASCII、UNICODE、UTF-8、ANSI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。