[Python]判斷系統編碼和字元編碼chardet

來源:互聯網
上載者:User

這裡使用了字元編碼判斷的一個模組chardet 使用esay_install 直接安裝就可以了

os環境win7  ide:wingide 

1 使用預設環境編碼

'''查看系統編碼'''import sys print 'system encoding: ',sys.getdefaultencoding()'''查看字串編碼'''import chardets = '你好 s'print s print chardet.detect(s)

輸出為

system encoding:  ascii你好 s{'confidence': 0.99, 'encoding': 'GB2312'}

這裡我們看到系統編碼為ascii , ide的編碼是 GB2312  所以顯示正常

2 標頭檔加入#coding=utf8

#coding=utf8'''查看系統編碼'''import sys print 'system encoding: ',sys.getdefaultencoding()'''查看字串編碼'''import chardets = '你好 s'print s print chardet.detect(s)

輸出

system encoding:  ascii浣犲ソ s{'confidence': 0.7525, 'encoding': 'utf-8'}

此時輸出是亂碼 也就是說字元已經變成了utf-8編碼,但是輸出是亂碼,懷疑是ide輸出編碼問題,但是沒找到更改ide輸出字元編碼什麼的選項。

使用命令列,執行這個檔案還是如此的輸出,那就是輸出時用的ascii碼,,,還是沒有確定

3 把s decode解碼在輸出呢

#coding=utf8'''查看系統編碼'''import sys print 'system encoding: ',sys.getdefaultencoding()'''查看字串編碼'''import chardets = '你好 s'print s print chardet.detect(s)ss = s.decode('utf-8') #utf8解碼print ss print chardet.detect(ss)

輸出

system encoding:  ascii浣犲ソ s{'confidence': 0.7525, 'encoding': 'utf-8'}你好 sD:\devsofts\python2.7\lib\site-packages\chardet-2.1.1-py2.7.egg\chardet\universaldetector.py:90: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal{'confidence': 1.0, 'encoding': 'ascii'}

奇怪用utf8 解碼之後顯示正常了,但是最後顯示的編碼變成了ascii ?? 疑問很大啊

等找到原因在來補上。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.