Bunun neden olduğu hakkında biraz daha fazla bilgi .
>>> s = u'\u2265'
>>> print s
printmuhtemelen ortamınız için otomatik olarak UTF-8 olarak ayarlanmış sistem kodlamasını kullandığından çalışır . (Yaparak kontrol edebilirsiniz import sys; print sys.stdout.encoding)
>>> print "{0}".format(s)
başarısız olduğu formatiçin çağrıldığı türün kodlamasını eşleştirmeye çalışır (bu konuda belge bulamadım, ancak bu fark ettiğim davranış). Dize değişmezleri, python 2'de ASCII olarak kodlanan bayt dizeleri olduğundan ASCII formatolarak kodlamaya çalışır s, bu da bu istisna ile sonuçlanır. Gözlemek:
>>> s = u'\u2265'
>>> s.encode('ascii')
Traceback (most recent call last):
File "<input>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265' in position 0: ordinal not in range(128)
İşte bu yüzden bu yaklaşımlar işe yarıyor:
>>> s = u'\u2265'
>>> print u'{}'.format(s)
≥
>>> print '{}'.format(s.encode('utf-8'))
≥
Kaynak karakter seti kodlama bildirimi ile tanımlanır; kaynak dosyada kodlama beyanı verilmemişse ASCII'dir ( https://docs.python.org/2/reference/lexical_analysis.html#string-literals )
from __future__ import unicode_literalskaynak dosyalarınızın başına koyun .