天天看點

python報錯問題解決:'ascii' codec can't encode character

之前部署了openstack虛拟化環境,有一天在使用nova list檢視虛拟機的時候,突然報錯!如下:

[root@linux-node1 src]# nova list

ERROR (UnicodeEncodeError): 'ascii' codec can't encode character u'\uff08' in position 9: ordinal not in range(128)

python在安裝時,預設的編碼是ascii,當程式中出現非ascii編碼時,python的處理常常會報這樣的錯,python沒辦法處理非ascii編碼的,此時需要自己設定将python的預設編碼,一般設定為utf8的編碼格式。

查閱網上,可以在程式中修改所有涉及到編碼的地方,強制編碼為utf8,即添加代碼encode("utf8"),這種方法并不推薦使用,因為一旦少寫一個地方,将會導緻大量的錯誤報告。

-------------------------------------------------

這裡介紹一個一次性修改後永久生效的方法:

在python的lib\site-packages檔案夾下建立一個sitecustomize.py

[root@linux-node1 nova]# find / -name site-packages

/usr/lib/python2.7/site-packages

/usr/lib64/python2.7/site-packages

[root@linux-node1 nova]# cd /usr/lib/python2.7/site-packages/

[root@linux-node1 site-packages]# cat sitecustomize.py #添加如下内容,設定編碼為utf8

# encoding=utf8 

import sys

reload(sys) 

sys.setdefaultencoding('utf8')

此時重新開機python解釋器,執行sys.getdefaultencoding(),發現編碼已經被設定為utf8的了,多次重新開機之後,效果相同,這是因為系統在python啟動的時候,自行調用該檔案,設定系統的預設編碼,而不需要每次都手動的加上解決代碼,屬于一勞永逸的解決方法。

[root@linux-node1 nova]# python                                       #終端進入python,即是重新開機python解釋器!可以多次進入

Python 2.7.5 (default, Aug 18 2016, 15:58:25) 

[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>>

接着,再次使用nova list指令,就沒有那個報錯了!

+--------------------------------------+----------------------------+--------+------------+-------------+--------------------+

| ID | Name | Status | Task State | Power State | Networks |

| b6a4738d-7e01-4068-a09b-7008b612d126 | beta-new1(beta環境1) | ACTIVE | - | Running | flat=192.168.1.151 |

| 9acdb28b-02c2-41bb-87c4-5f3a8fa008ab | dev-new-test1(測試環境1) | ACTIVE | - | Running | flat=192.168.1.150 |

| 30e5ba3e-3942-4119-9ba6-7523cf865b6f | kvm-server003 | ACTIVE | - | Running | flat=192.168.1.152 |

| a2893208-3ec9-4606-ab82-d7a870206cb9 | kvm-server004 | ACTIVE | - | Running | flat=192.168.1.153 |

| 3483d9f1-4015-48d9-9837-b67ca82dd54d | kvm-server005 | ACTIVE | - | Running | flat=192.168.1.154 |

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5893121.html,如需轉載請自行聯系原作者