問題:使用notepad++或sublime text3編輯的python文件若是含有中文,使用python2.7運行會出現亂碼。python
緣由:windows
windows的本地默認編碼是gbk編碼。python2.7
notepad++、windows自己的寫字板以及sublime text3的默認編碼都是utf-8。編輯器
windows記事本的默認編碼是ANSI。ANSI並非某一種特定的字符編碼,而是在不一樣的系統中,ANSI表示不一樣的編碼。在中文系統中就是gbk編碼。編碼
這就是爲何用記事本編輯的python文件,用python2.7運行中文不會出現亂碼。而用notepad++、windows自己的寫字板以及sublime text3編輯的python文件,用python2.7運行中文會出現亂碼的緣由。命令行
解決方法:code
1、經過將中文先解碼(解碼成unicode碼)再編碼(編碼成gbk)的方式解決,以下: blog
# coding=utf-8 # 等待用戶輸入 inp=raw_input("請輸入用戶名:".decode("utf-8").encode("gbk")) print inp
2、在編輯器中設置編碼格式ip
備註:utf-8
那麼Windows系統是如何區分ANSI背後的真實編碼的呢?
微軟用一個叫「Windows code pages」(在命令行下執行chcp命令能夠查看當前code page的值)的值來判斷系統默認編碼,好比:簡體中文的code page值爲936(它表示GBK編碼,win95以前表示GB2312,詳見:Microsoft Windows' Code Page 936),繁體中文的code page值爲950(表示Big-5編碼)。