我有一個相當大的Python 2.6應用程序,大量的打印語句灑了。我在整個使用Unicode字符串,它通常很好。但是,如果我重定向應用程序(如「myapp.py> output.txt中」)的輸出,那麼我偶爾會出錯,如這樣的:Linux/Python:編碼一個unicode字符串打印
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)
我想,如果有人設置了同樣的問題出現他們的LOCALE到ASCII。現在,我完全理解這個錯誤的原因。我的Unicode字符串中有一些字符不能用ASCII編碼。很公平。但是我希望我的python程序儘可能地嘗試打印可理解的東西,可能會跳過可疑字符或用Unicode標識替換它們。
這個問題一定是常見的......處理這個問題的最佳做法是什麼?我更喜歡一個解決方案,它允許我繼續使用普通的「打印」,但如果需要,我可以修改所有的事件。
PS:我現在已經解決了這個問題。解決方案既不是給出的答案。我使用了在http://wiki.python.org/moin/PrintFails給出的方法,如ChrisJ在其中一個評論中給出的。也就是說,我用一個調用unicode編碼並使用正確參數的包裝器替換sys.stdout。工作得很好。
「ASCII」是一種語言環境? – 2011-02-24 20:23:57
可能的重複[如果命令行程序不確定stdout的編碼,應該輸出什麼編碼?](http://stackoverflow.com/questions/5013599/if-a-command-line-program-is-unsure- of-stdouts-encoding-what-encoding-should-it) – 2011-02-24 20:28:04
以下是可能證明有用的兩個指針:http://wiki.python.org/moin/PrintFails - http://stackoverflow.com/questions/1473577/寫入unicode字符串通過sys-stdout-in-python – ChrisJ 2011-02-24 20:40:20