2011-07-29 25 views
5

ayarlı varsayılan bir kodlama baskı kullanarak: Dive into Python: Unicode Discussionhiçbir UnicodeError okuduktan sonra ASCII

Ben indic script ismimi yazdırarak denemeye meraklı aldık. Ben defaultencoding böylece Unicode den ASCII için otomatik zorlama çalışmaması gerektiğini ASCII olarak ayarlanır beri bana UnicodeError vermek print name bekliyordum

>>> import sys 
>>> sys.getdefaultencoding() 
'ascii' 
>>> name = u'\u0935\u0948\u092D\u0935' 
>>> print name 
वैभव 

- Ben v2.7.2 kullanıyorum.

Neyi eksik?

+2

Herkes gerçekten iyi, Python 3 değil eski Python 2. kullanıyor Ama [ek regex kütüphane] (http gerekecektir vardı. org/pypi/regex), Unicode'da 're' bozuk olduğu için. Python'daki korkunç UCS ⁄₄ ²⁄₄ heisenbugs yüzünden bunu gerçekten yapamazsınız. – tchrist

cevap

9

print uses sys.stdout.encoding değil, sys.getdefaultencoding(): Python terminale takılı çıkışını bulduğunda

, bu terminalin kodlama sys.stdout.encoding özelliği ayarlar. bildiriminin işleyicisi, Unicode bağımsız değişkenlerini otomatik olarak str çıkışına kodlayacaktır. //pypi.python: Python ciddi Unicode işi yapmak için teşebbüs

>>> import sys 
>>> print(sys.stdout.encoding) 
utf-8 
>>> print(sys.getdefaultencoding()) 
ascii 
>>> name = u'\u0935\u0948\u092D\u0935' 
>>> print name 
वैभव 
İlgili konular