※ 引述《StubbornLin (Victor)》之銘言:
: 我這連續好幾天來都用pydev在開發,這個問題我也遇過
: 主要是出在於,eclipse的stdout的encoding是None
: 你可以分別在python shell裡和pydev下跑
: import sys
: print sys.stdout.encoding
: 看看結果,一個是cp950一個是None,這似乎算是pydev現階段的一個問題
: 我有找過解決方案,不過目前似乎是無解?
: 會錯誤是出在於,輸出的字串編碼因為是None的關係,所以似乎被編成了ascii
: 當然,含有中文字的字串被編成了ascii,會出錯是理所當然的
: 解決的辦法,就是在輸出時手動加上編碼
: print ("%s %s %s %s %s" % tuple(Parser.weather)).encode('cp950')
: 這樣編出來之後,在pydev下就不會出問題了
: 不過手動替每個輸出都這樣做還蠻麻煩的,可以考慮換掉stdout
: 自己寫一個,把收到的資料全部都encode成cp950再交給真正的stdout試試
: 不知道有沒有人有更好的解決辦法?
請去改 Python25\Lib\site.py (找 def setencoding 這段碼, 把原本 if 1/0 交換)
或者是在程式裡面 reload(sys); sys.setdefaultencoding(...)
現在手邊沒有 Eclipse, 所以不確定設定 Eclipse 的 console encoding 之後能不能
讓 Python 透過現有 locale 機制判斷到, 等我有空之後裝起來試試看 ...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.63.79