這是一個讓我困惑很久的問題。我使用bbedit來編輯python代碼。據我瞭解,從編輯器中運行代碼,會產生自己的python進程,運行代碼並將輸出寫入日誌文件。所以bbedit不知道環境變量等。如果我在終端的命令行試試這個:編碼錯誤從bbedit運行python
>>> s = 'háček'
>>> print s
háček
找到並且很好。但是,如果我在的BBEdit以下文件:
#!/opt/local/bin/python
# -*- coding: utf-8 -*- #
s = u'háček'
print s
,並嘗試在編輯器中運行它,我得到:
UnicodeEncodeError:「ASCII」編解碼器不能在1-2位字符進行編碼:序數不在範圍內(128)
,所以我必須這樣做:
print s.encode('utf-8')
任何人都熟悉的BBEdit能照我這是怎麼回事?有沒有辦法告訴編輯如何在存在unicode字符的情況下行事?
感謝, 喬恩
只是一個註釋:'sys.setdefaultencoding'已經從Python 3中刪除。我遇到了類似的問題,罪魁禍首竟然是地區。 'locale.getpreferredencoding()'返回US-ASCII,導致一些頭疼的文件IO。在我的〜/ .bash_profile中顯式設置LANG修復了它。 – robjwells 2013-09-13 16:37:26