Ayarı boru Python stdout zaman doğru kodlama | Netgez.com
SORU
29 Ocak 2009, PERÅžEMBE


Ayarı boru Python stdout zaman doğru kodlama

Python program çıktısını boru, Python yorumlayıcısı kodlama hakkında kafası karışır ve Hiçbiri ayarlar. Bu böyle bir program anlamına gelir:

# -*- coding: utf-8 -*-
print u"åäö"

normal olarak çalışır, ancak başarısız olduğunda iyi çalışıyor

UnicodeEncodeError: 'ascii' Kodek character u'\xa0' 0 konumunda: range(128) sıra . kodlayabilir mi

boru bir dizi kullanıldığında.

Boru zaman bu işi yapmak için en iyi yolu nedir? Sadece ne olursa olsun kodlama kullansın kabuk/dosya sistemini kullanarak bilmem ne miyim?

Şimdiye kadar gördüğüm önerileri site.py doğrudan değiştirmek için, ya da bu kesmek kullanarak: defaultencoding hardcoding

# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"

Daha iyi bir şekilde boru çalışması var mı?

CEVAP
23 Temmuz 2009, PERÅžEMBE


İlk olarak, bu çözüm ile ilgili olarak:

# -*- coding: utf-8 -*-
print u"åäö".encode('utf-8')

Pratik açıkça verilen bir kodlama her zaman baskı için değil. Tekrarlayan ve hata eğilimli olacaktır.

Daha iyi bir çözüm değiştirmektirsys.stdoutseçilen kodlama kodlamak için program başlangıcında. Burada özellikle Python: How is sys.stdout.encoding chosen? bir yorum buldum bir çözüm"": . toka

import sys
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Booredatwork.com

    Booredatwork

    5 Ocak 2009
  • ehowhome

    ehowhome

    22 NİSAN 2009
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011