python編碼問題

來源:互聯網
上載者:User

標籤:default   port   oca   def   decode   nbsp   技術   直接   實現   

編碼問題真是惱人,整理理解一下。

 

linux:vim 下set fileencoding

python中的chardet檢測包

import chardetf = open(‘file‘,‘r‘)fencoding=chardet.detect(f.read())print fencoding
瞭解python中str的編碼後可以利用decode和encode來實現編碼的轉換。

一般流程是str利用decode方法根據str的編碼將其解碼為unicode字串類型,然後利用encode根據特定的編碼將unicode字串類型轉換為特定的編碼。python中str和unicode屬於兩種不同的類型,如下。

一般情況下window預設編碼gbk,linux預設編碼utf8python編程中 系統編碼,python編碼,檔案編碼 的概念。

系統編碼:預設寫源碼的編輯器的編碼方式。它代表源碼檔案內的所有內容都是根據詞方式編碼成二進位碼流。存入到磁碟中的。linux下通過locale命令查看。

python編碼:指python內設定的解碼方式。如果不設定的話,python預設的是ascii解碼方式。如果python原始碼檔案中不出現中文的話,這個地方怎麼設定應該不會問題。

設定方法:在源碼檔案開頭(一定是第一行):#-*-coding:UTF-8-*-,源碼檔案的設定解碼方式是UTF-8 或者

import sysreload(sys)sys.setdefaultencoding(‘UTF-8‘)

檔案編碼:文本的編碼方式,linux下vim利用set fileencoding查看。

一般情況下輸出亂碼的原因就是 沒有按照系統解碼的方式進行編碼。
比如print s, s類型為str,linux系統下系統預設編碼為utf8編碼,s在輸出前就應該編碼為utf8。如果s為gbk編碼就應該這樣輸出。print s.decode(‘gbk‘).encode(‘utf8‘)才能輸出中文。

window下面情況相同,window預設編碼為gbk編碼,所以s輸出前必須編碼為gbk。

python處理中一般處理unicode類型。這樣輸出前直接編碼即可。

 

python編碼問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.