1. 程式人生 > >python3.x中bytes與字串詳解

python3.x中bytes與字串詳解

python3.x bytes: 

某種編碼(UTF-8,GBK等)型別的位元組序列

普通字串加上字母b作為字首,就是表示bytes字串了。

需要注意的是:

  • bytes,都是某種特定的編碼的字串
  • bytes,如果寫上對應的值的話,那麼只能直接寫ASCII字串,即只能寫英文單詞這種
  • 而如果想要寫中文漢字這種,需要寫\xYY這種16進位制的值的形式才可以

    • 其中\xYY的值到底是多少,是你自己去通過相應的辦法,將其編碼為特定型別的字元所獲得的
    • 其中如何把字串,轉換為某種編碼的bytes的值,可以參考下面的"str->bytes"中的程式碼
    • 一般來說,我們在實際程式設計中,所遇到的是,你自己需要知道當前獲得的字串變數,是bytes,並且知道其是什麼編碼,基本上就可以了,然後就可以用後面介紹的bytesVariable.decode("specificEncoding")去解碼為你需要的Unicode的str字串了

bytes->str:
【核心程式碼邏輯】
1.如果你要寫對應的bytes變數,那麼需要加上字首字母b;

注意:
不過要注意的是,只能寫英文單詞,而不能直接寫中文等非ASCII的字元。
如果非要寫非ASCII字元,那麼只能自己想辦法先將其轉化為對應某種編碼的byte,內部儲存的內容,是對應的各個位元組,打印出來的效果就是\xYY這種十六進位制的值。

其中:
如果把對應的中文轉換對特定編碼的bytes的16進位制值,可以參考下面的"str->bytes"的程式碼。
2.然後用
bytesVariable.decode("specificEncoding")
去解碼為對應的str(即Unicode字串)
其中:specificEncoding是該bytes的編碼。

3.然後你就可以拿著Unicode的str,去做你想要的事情了
比如常見的打印出來看看。

【完整程式碼】
參見下面的:python_3.x_bytes_to_str.py

python3.x  str:Unicode型別的字串

Python 3.x中,直接輸出的字串(被單引號或雙引號括起來的),就已經是Unicode型別的str了。

當然,有一些前提:

  • Python檔案開始已經宣告對應的編碼
  • Python檔案本身的確是使用該編碼儲存的
  • 兩者的編碼型別要一樣(比如都是UTF-8或者都是GBK等)

這樣Python解析器,才能正確的把你所輸出字串,解析為對應的unicode的str

str->bytes:
【核心程式碼邏輯】
1.預設寫出的字串,已經就是str,即Unicode,的型別了。
或者你之前已經獲得了對應的unicode的str了。

注:當然,如果在Python檔案中,需要滿足下列條件:
A。Python檔案開始已經宣告對應的編碼
B。Python檔案本身的確是使用該編碼儲存的
C。兩者的編碼型別要一樣(比如都是UTF-8或者都是GBK等)

2.然後呼叫
unicodeStr.encode("encodingType")
去編碼為對應的位元組序列bytes,
3.然後後續再進行相應的你所需要的處理

【完整程式碼】
參見下面的:python_3.x_str_to_bytes.py