這裡使用了字元編碼判斷的一個模組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 ?? 疑問很大啊
等找到原因在來補上。。