utf8編碼和中文不能解碼問題解決


首先我們知道utf-8是一種可變長編碼格式,表現為1個英文字母占1個字節,一個漢字占3個字節。

特點:

  1.支持大部分中文。

  2.是為傳輸設計的編碼。

  3.是unicode字符集(涉及全球所有字符,漢字,英文,日語.......)的一種實現。

場景:有的同學在遇到with open()這個方法讀取某個txt文件時,指定了方法的參數encoding=utf8,制定了讀取方式為r,修改了txt文件也是utf8的編碼格式,運行代碼發現報錯了,信息大概就是 ****codec cannot decode byte oxd4****。

分析:報錯信息說明oxd4解碼失敗,定位解碼過程就在於我們選擇了r的讀取方式。文本模式讀取,將字節byte(utf8)轉成字符串str(unicode),導致某個編碼格式為utf8的中文字符在解碼為unicode時報錯。

解決:將r改為rb,即二進制模式讀取,不存在中間的將字節byte(utf8)轉(解碼)為字符串str(unicode)的過程。

總結:

  1.uft8->unicode,使用decode()方法,方法默認使用“utf8”的編碼。(可以理解為我現在指定磁盤上某個編碼為uft8的文件去解碼為unicode,,方便后續我的python解釋器內尺存使用)

  2.r,文本讀取模式,即byte->str的轉換,但是會遇到部分中文不能成功的情況,即上面的場景。

  3.rb,二進制讀取,不將byte轉換成str(可以理解為字符集不切換,編碼也不切換)

  4.如果公司規定保持2的代碼,那么我們可以試試使用iso-8859-1編碼格式,這是一種單字節編碼格式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM