Re: [問題] utf-8的問題

看板Python作者 (Victor)時間17年前 (2008/02/10 22:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《hl4 (Zec)》之銘言: : Traceback (most recent call last): : File "C:\Documents and Settings\chiao\\WorkSpace\weather\src\weather.py", : line 53, in <module> : print "%s %s %s %s %s" % tuple(Parser.weather) : UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: : ordinal not in range(128) : 我用eclipse和pydev來執行的 : eclipse 的 console encoding 和 text file encoding 都改成 utf-8 了 : code的來源是這裡 : : http://victorlin.serveftp.org/programming/article/?article_id=24 : 複製下來的code,用python shell直接執行倒是正確無誤 : 謝謝 我這連續好幾天來都用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試試 不知道有沒有人有更好的解決辦法? -- VICTOR工作室 http://www.kinmen.info/vic/ 程式設計教學 http://victorlin.serveftp.org/programming/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.64.132
文章代碼(AID): #17hmVil_ (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 5 篇):
文章代碼(AID): #17hmVil_ (Python)