python中的編碼是個惱人的問題,第乙個是檔案編碼,在第一行設定了#-*- coding: utf-8 -*-就可以解決。
第二個是環境編碼,就是你有個中文unicode的encode或decode操作,它給你報錯。
我們最不喜歡看見這段出錯資訊了:
unicodedecodeerror: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)加入這段**在專案入口檔案開頭,可以解決這個問題。
import sys或者將這段**放在專案根目錄下的sitecustomize.py檔案中。try:
reload(sys)
sys.setdefaultencoding("utf-8")
except attributeerror:
pass #沒起作用
問題是python2.5之後的版本,有時不在專案開頭自動載入這個檔案。糾結啊,自己定義的方式自己有時不支援。
只好在入口檔案加一段,確保執行sitecustomize.py
# -*- coding: utf-8 -*-另外關於python的搜尋路徑pythonpath,可以用以下方式增加乙個路徑到其中,比如專案根目錄下的library#解決python2.5之後有時無法載入sitecustomize.py的問題
import sys
import os
sys.path = [os.getcwd()] + sys.path
import sitecustomize
reload(sitecustomize)
# -*- coding: utf-8 -*-
import os.path
import sys
import site
try:
reload(sys)
sys.setdefaultencoding("utf-8")
except attributeerror:
pass
base_dir = os.path.dirname(os.path.abspath(__file__))
prev_sys_path = list(sys.path)
# site.addsitedir adds this directory to sys.path then scans for .pth files
# and adds them to the path too.
site.addsitedir(os.path.join(base_dir, 'library'))
# addsitedir adds its directories at the end, but we want our local stuff
# to take precedence over system-installed packages.
# see
new_sys_path =
for item in list(sys.path):
if item not in prev_sys_path:
sys.path.remove(item)
sys.path[:0] = new_sys_path
Python編碼 常見的編碼設定
1 檢視自己電腦的python的編碼設定 coding utf8 import sys,locale locale.getpreferredencoding 重要引數,預設為開啟本地作業系統讀取的文字檔案的編碼方式,因作業系統而異,除非指定 sys.stdout stdin stderr 標準輸出 ...
python日積月累之None和設定編碼
內建型別none表示乙個空物件,沒有方法和屬性。none是乙個特殊的常量。none和false不同。none不是0。none不是空字串。none和任何其他的資料型別比較永遠返回false。none有自己的資料型別nonetype。你可以將none複製給任何變數,但是你不能建立其他nonetype物件...
Python 設定編碼格式
python在安裝時,預設的編碼是ascii,當程式中出現非ascii編碼時,python的處理常常會報這樣的錯unicodedecodeerror ascii codec can t decode byte 0x?in position 1 ordinal not in range 128 pyt...