Bir Python programının çıktısını oluştururken, Python yorumlayıcısı kodlama konusunda kafanız karışır ve Yok olarak ayarlar. Bu, şöyle bir program anlamına gelir:
# -*- coding: utf-8 -*-
print u"åäö"
normal çalıştığında iyi çalışır, ancak aşağıdakilerle başarısız olur:
UnicodeEncodeError: 'ascii' codec bileşeni 0 konumunda u '\ xa0' karakterini kodlayamıyor: sıra değeri aralıkta değil (128)
bir boru dizisinde kullanıldığında.
Boru döşerken bunu yapmanın en iyi yolu nedir? Sadece kabuğu / dosya sistemini / ne kullanıyorsa onu kodlamayı kullanabilir miyim?
Şimdiye kadar gördüğüm öneriler site.py'nizi doğrudan değiştirmek veya bu hack'i kullanarak varsayılan kodlamayı sabit olarak kodlamaktır:
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
Boruların çalışmasını sağlamanın daha iyi bir yolu var mı?
chcp 65001
komut dosyanızı çalıştırmadan önce de çalıştırabilirsiniz . Bunun sorunları olabilir, ancak genellikle yardımcı olur ve çok fazla yazmayı gerektirmez (daha az set PYTHONIOENCODING=utf_8
).
setx PYTHONENCODING utf-8
Yazmayı kaydetmek istiyorsanız kalıcı hale getirmeye çalışın .