python中讓人抓狂的編碼問題

2021-08-04 23:56:51 字數 1228 閱讀 2672

用python程式設計時,會遇到三個方面的編碼:

(1)python程式檔案的編碼

(2)python開發環境的編碼

(3)python讀取寫入檔案、網頁時,這些外部檔案的編碼

python2,在解決編碼問題上,比較複雜;python3在2的基礎上,優化了編碼部分,在寫程式時,使編碼問題很簡單就解決。

指建立這個檔案時的編碼,比如python2建立時預設檔案編碼是ascii, 可以用一些編輯器如notpad txt

檢視檔案編碼型別; 因此,想使用utf-8編碼時,開頭一般會加上#coding=utf-8

python2環境預設的是ascii編碼, python3預設的是utf-8編碼。

因此,python2寫程式時,要加上執行環境要想使用utf-8的話, 一般要加上幾句:

import sys

reload(sys)

sys.setdefaultencoding(『**重點內容**utf-8』)

這個是比較複雜的部分。

首先要清楚你讀取的外部檔案是什麼型別。

這個時候要用到 編碼encode, 解碼decode。

python2的編碼解碼:找乙個統一的中間編碼;

encode:將unicode編碼轉為其它型別的編碼;

decode:將其它型別的編碼轉為unicode編碼;可以通過這些轉換方便之後程式的書寫。

python3:python3預設的是utf-8編碼, 並且python3把 位元組流bytes, 字串str分的很清楚,可以方便轉換。

encode:將字元流轉換為機器編碼的位元組流,全都是16進製制;

decode:將16進製制的位元組流轉換為人能識別的字串。

python3因為,編碼問題已經解決了很多,按照正常程式讀取寫入, 基本不會出現問題。

讀取檔案open(, ,encoding=』utf-8』),設定讀進來的時候是什麼格式。

我經常碰到的是檔案裡有特殊字元,讀取到中間時,讀不下去了,導致讀取報錯。 這時候我的解決辦法是: open(』rb『)按照位元組流去讀取,

可以保證能夠讀進來。 然後,python3 bytes 和str轉換很方便, 轉換成字串就可以去做其它事情了

Oh 讓人抓狂的git

原文 oh git 譯者 傑微刊兼職譯者張帆 git很難 因為搞砸了很容易,但是找到如何修復錯誤的方法缺很難。git官方的文件,存在 先有雞還是先有蛋 的問題 除非你知道解決問題的方法的特定名字,否則很難查詢到解決方案並順利的解決自己的問題。所以,下面是我自己曾經遇到的一些十分糟糕的場景,並且我最終...

讓人抓狂的縮排衝突 eslint

原本在開開心心地寫著 然鵝格式化後居然有一處 eslint 提示報錯,說我的縮排有問題,刪除多餘的縮排後,再格式化又變成了之前那樣!其它地方都沒問題,為啥就那一小塊會報錯呢?專案使用了 prettier 進行自動格式化,eslint 來進行檢查報錯,可是這倆貌似有世仇,不能好好相處。廢話不多說了,直...

python 令人抓狂的編碼問題

執行以下程式 usr bin env python coding utf 8 file open all hanzi.txt wb listhz n 0for ch in xrange 0x4e00,0x9fa6 print unichr ch file.write unichr ch 此行出錯。正...