流暢的python讀書筆記-第四章 編碼問題

處理文本的最佳實踐是「Unicode 三明治」


  1. 要儘早把輸入(例如讀取文件時)的字節序列解碼成字符串。
  2. 這種三明治中的「肉片」是程序的業務邏輯,在這裏只能處理字符串對象。
  3. 在其餘處理過程當中,必定不能編碼或解碼。
  4. 對輸出來講,則要儘可能晚地把字符串編碼成字節序列。

案例

例如,在 Django 中,
視圖應該輸出 Unicode 字符串;
Django 會負責把響應編碼成字節序列,並且默認使用 UTF-8 編碼。

clipboard.png

編碼建議 顯示指明編碼

編碼默認值的最佳建議是:別依賴默認值
明確指定encodeing編碼

二進制模式

除非想判斷編碼,不然不要在二進制模式中打開文本文件;
即使如此,也應該使用 Chardet,而不是從新發明輪子spa

總結

Unicode 三明治

  • 儘早 字節序列解碼成字符串
  • 三明治中的「肉片」是程序的業務邏輯,在這裏只能處理字符串對象
  • 儘可能晚地把字符串編碼成字節序列

顯示編碼

別再二進制中打開文本,判斷編碼應該使用 Chardet

相關文章
相關標籤/搜索