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

看板Python作者 (渴望平凡的幸福)時間17年前 (2008/02/11 18:48), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/5 (看更多)
※ 引述《alvin17 (alvin17)》之銘言: : 測試結果報告大大 : 將site.py對應的code改成 : if 1: : # Enable to support locale aware default string encodings. : import locale : loc = locale.getdefaultlocale() : if loc[1]: : encoding = loc[1] : 到Eclipse + Pydev底下執行以下之code : import sys : print sys.stdout.encoding : 結果為 : None 嗯嗯 ... 剛剛也用手邊的版本測了一下 (Eclipse 3.3.0 Pydev 1.3.10) 改過 site.py 讓預設 string encoding 跟著 locale 連動之後 在 Eclipse 裡面抓到的預設 string encoding 會是系統當時的 locale (我用日文 WinXP, 所以是 cp932) 而 sys.stdout.encoding 的確也是 None 這時 print "中文測試" 會直接以「.py 檔用的 encoding 輸出, 不轉碼」 (因此,如果檔案用的是預設的 cp932 就可以正常顯示;如果存成 UTF-8 的話就不行) 而 print u"中文測試" 因為 sys.stdout.encoding == None 所以會採用系統預設 locale 轉換之後輸出 只要檔案有正確地指明編碼 (檔頭的 # coding: utf8 標記) 應該都可以輸出 不過可能會遇到 UnicodeEncodingError 我個人是習慣以 UTF-8 儲存 .py 檔,然後只使用 unicode string 不過這在 terminal 採用 cp932/cp950 的時候很容易遇到 UnicodeEncodingError 所以有時候可以暴力一點: import codecs, locale, sys sys.stdout = (codecs .lookup(locale.getdefaultlocale()[1]) .streamwriter(sys.stdout, 'replace')) ... 不過這樣在 print 普通字串 (非 unicode 字串) 的時候卻會炸掉 也不算是完美解就是了 唉唉 ... 還是 Linux 下面的 utf-8 terminal 方便啊 ..... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.63.79 ※ 編輯: Tiberius 來自: 59.126.63.79 (02/11 18:49)
文章代碼(AID): #17i2VdeX (Python)
討論串 (同標題文章)
文章代碼(AID): #17i2VdeX (Python)