我正在使用WinXP 5.1.2600,編寫涉及中文拼音的Python應用程序,這涉及到無盡的Unicode問題。切換到Python 3.0已經解決了很多問題。但是出於某種奇怪的原因,控制檯輸出的print()函數不支持Unicode。這是一個小型項目。python 3.0,如何使print()輸出unicode?
print('sys.stdout encoding is "' + sys.stdout.encoding + '"')
str1 = 'lüelā'
print(str1)
的輸出被(改變角括號方括號可讀性):
sys.stdout encoding is "cp1252" Traceback (most recent call last): File "TestPrintEncoding.py", line 22, in [module] print(str1) File "C:\Python30\lib\io.py", line 1491, in write b = encoder.encode(s) File "C:\Python30\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u0101' in position 4: character maps to [undefined]
注意,U = \ XFC = 252給出沒有問題,因爲它是上ASCII。但是,ā= \ u0101超出了8位。
任何人都有一個想法如何將sys.stdout的編碼更改爲'utf-8'?請記住,如果我理解文檔權限,則Python 3.0不再使用codecs
模塊。
道歉,我給你的程序沒有前言。的3行給定之前,它開始這樣的:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
不幸的是,由指定的編碼「的編碼:」行是源代碼的編碼,而不是的控制檯輸出。但是謝謝你的想法!
如果您使用可以顯示所需Unicode字符的字體,並且將代碼頁更改爲utf-8(可以使用:`CHCP 65001`),則cmd.exe可以顯示Unicode字符 – smerlin 2011-03-23 16:03:35
這不會確實可靠地工作......除了MSDN建議使用UTF-16,即所有Windows NT操作系統的本地編碼。 – dom0 2012-05-18 07:48:49