解決Windows下python中文亂碼問題

2021-07-09 21:04:43 字數 1353 閱讀 9498

在windows的環境下使用python有時面臨乙個問題,那就是處理中文時出現亂碼的問題,下面舉個例子:

s1 = "中文文字"

fr = open('in.txt')

s2 = fr.readline()

fr.close()

print "s1: ", s1

print "s2: ", s2

if s1 == s2:

print "s1: ", s1, "等於", "s2: ", s2

else:

print "s1: ", s1, "不等於", "s2: ", s2

這個指令碼中,s1和s2是兩個中文字串,其中s1直接由指令碼給出,而s2的值從下面的檔案讀得:

將它們各自的內容輸出,然後比較兩個字串,看看它們是否相等。

雖然它們的文字內容是相同的,但是執行了這個指令碼之後卻得到了如下結果:

這就是其編碼方式不同造成的,我們可以在python shell中看它們各自的編碼:

造成這個問題的原因是,windows系統的預設編碼系統是gbk,而python直譯器的預設編碼系統是utf-8。

這樣一來,由於s1是直接由**給出,因此s1的編碼方式是utf-8,而s2由檔案讀得,所以s2的編碼方式是gbk。

(值得一提的是,windows同樣可以正常顯示utf-8編碼的檔案,而gbk編碼的字串,python直譯器也可以將其正常的輸出,但是互相比較就不行)

要解決上面的問題也非常簡單:

上面的指令中s3為s2用gbk解碼之後的結果得到的是「測試文字」這個字串的標準unicode表示法,而s4是s3經過utf-8編碼之後的結果,得到的是該unicode的位元組碼。可以看到s4此時就和s2的值是一樣的了。

所以要比較s2和s1,需要進行轉碼:

這樣一來,輸出就是兩者相等:

windows下使用gcc呼叫python的問題

用gcc編譯了乙個c 呼叫python的程式,這個程式在vs下是好用的,而且沒有使用vs的任何庫 可是到了gcc下就是無法使用 後來上網查了一下資料才知道,是因為cl與gcc的執行時庫不同。開啟cmd視窗,輸入python就可以看到 python的windows版本是用msc編譯的 所以python...

windows下c語言程式呼叫python實踐

目的 執行環境 注意點 在實際的工作中,為了方便利用python寫的程式 因為python中有很多功能強大的函式庫 有時需要進行c c 與python的混合程式設計,特別是需要在c程式中呼叫python指令碼。關於c程式呼叫python 除了官方文件,網上有很多好的文章可以參考,下面開展實踐,實驗的...

windows與linux安裝Python虛擬環境

首先安裝工具 如果想自定義虛擬環境位置,可以修改環境變數,路徑自己指定想要放虛擬環境的地方 修改環境變數 workon home 所有虛擬環境儲存位置的路徑 這樣我們建立的虛擬環境就知可以按照我的需求存放 指定安裝python3的虛擬環境 python引數後面指向安裝python3 的路徑,然後給虛...