1. 程式人生 > >我了解的字符編碼

我了解的字符編碼

二進制 不同 漢字 code 基礎 gb2312 學習 浪費 asc

我了解的字符編碼

學習了一些編碼知識,想對其進行記錄並加入一些我的體會

ASCII碼

美國信息交換標準代碼.
信息科學起源於美國,最初的編碼也起源於美國,所以ASCII碼裏的文字編碼只有英文字符

  1. 采用1Byte(8位二進制數)編碼,所以最多只有256種可能的字符
  2. 被大部分後來的編碼兼容,這也是為什麽我們在改變編碼時英文字符不會亂碼

GBK

漢字內碼擴展規範
在ASCII的基礎上擴展了漢字編碼,每個字符占2個字節

GB2312 -> GBK(支持繁體) -> GB18030(加入了日文,朝鮮語等)

UNICODE 字符集

Unicode 的建立旨在統一編碼,在世界上大多數書寫系統中表達的文本都被其包含

UTF-8

utf-8 是萬維網上的主要編碼,在編程時,也大多使用utf-8進行編碼
采用變長編碼,存儲效率比較高,推薦使用

UTF-16 與 UTF-32

utf-16 為定長編碼,固定2個字節,Java中程序內部的編碼便為utf-16
utf-32 采用4字節 處理速度較快,但浪費了大量的空間,影響傳輸速度,較少被使用.

ANSI編碼

  • Windows上非Unicode的默認編碼
  • 不同系統的默認編碼不同
  • 記事本默認采用ANSI保存,所以使用其他編輯器打開記事本寫的文件,漢字可能會亂碼

字節序

在一些編碼中,高低位字節存儲順序不同.

  1. Big Endian : 高位字節存在低地址,低字節存在高地址
  2. Little Endian : 與前者相反

例如, 0XABCD
Big Endian:
0000: AB
0001: CD
Little Endian:
0000: CD
0001: AB

我了解的字符編碼