1. 程式人生 > >bytes、str與unicode

bytes、str與unicode

style pytho 使用 代碼 something col code clas 接受

1、Python3字符序列的類型

  bytes -> 原始的8位值(既字節)

  str -> Unicode字符

2、Python2字符序列的類型

  str -> 原始的8位值(既字節)

  unicode -> Unicode字符

即Python3的bytes對應Python2的str,而Python3的str對應Python2的unicode

寫代碼的時候不要對字符編碼做任何的假設。

編寫兩個輔助函數來進行轉換。

接受str或bytes,總是返回str:

def to_str(bytes_or_str):
    if isinstance(bytes_or_str, bytes):
        value 
= bytes_or_str.decode(utf-8) else: value = bytes_or_str return value

接受str或bytes,並總是返回bytes:

def to_bytes(bytes_or_str):
    if isinstance(bytes_or_str, str):
        value = bytes_or_str.encode(utf-8)
    else:
        value = bytes_or_str
    return value

3、在Python3中通過內置的open函數獲取文件句柄會默認使用utf-8編碼格式來操作文件

如果要寫入二進制數據,把encoding參數設為b

按下面的方式來使用open函數

with open(path/filename, wb) as f:
    do something

(讀取文件的時候也會有同樣的問題,這時候使用‘rb‘)

bytes、str與unicode