6.1.編碼/解碼器的基本概念
1.Introduction
- 編碼(encode) /解碼(decode) - 編碼就是將字符轉為位元組的過程與演算法 
- 解碼就是將位元組轉為字符的過程與演算法 
 
- 字符集 (字碼) - 各種文字及符號的總稱, 例如常見的有: - ASCII 
- GBK 
- Unicode 
 
- 以Unicode編碼為例, 其字碼為4~6個16進位數字, 並在前面加上U+ - 英文字母A的Unicode字碼: U+0041 
- 歐元符號: U+20AC 
 
 
- 字符編碼 - 將字符集轉為二進位 
- 例如ASCII字符編碼可將ASCII字符集中的128個字符轉為二進制 
- 代表字元的位元組會根據使用的編碼而定, 例如Unicode只定義了字符集以及每個字符對應到的唯一編碼值(code point), 編碼演算法則有UTF-8, UTF-16, UTF-32 
- 編碼是一種演算法, 可互相轉換字碼 - 以A的位元組為例 - UTF-8編碼: \x41 
- UTF-16LE編碼: \x41\x00 
 
 
 
2.Python的操作
- Python中的字串類型有兩種: str跟bytes, 也就是對應到前一個部分所說的字符轉為位元組(16進位), - python編輯界面和運行界面, 通常都是默認str為unicode編碼 
- unicode str的表示方式有兩種: u'字符串'或者'\u四位16進位數'. 它們是等價的, 而且都是str對象 
- 當bytes中的字節符合ASCII碼的可顯示字符時, 這個字節就會按照ASCII碼來顯示, 否則就會以16進位顯示 
 
     >>> u'\x40\x41'
    u'@A'- 若要宣告的字串為bytes形式, 可以在字串前加上b - >>> b'\x40\x41' '@A'
- str可以通過encode轉化为bytes, bytes可以通過decode轉化为str 
    s = 'cafe'
    # str 'cafe'有四個unicode字元
    >>> b= s.encode('utf8')
    >>> b
    'cafe'
    # 用utf-8將str編碼成bytes
    >>> b.decode('utf8')
    u'cafe'
    # 用utf-8將bytes編碼成strLast updated
Was this helpful?