Bunun neden olduğu hakkında biraz daha fazla bilgi .
>>> s = u'\u2265'
>>> print s
print
muhtemelen 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 format
iç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 format
olarak 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_literals
kaynak dosyalarınızın başına koyun .