Translate to:

Sledujte YouTube

 

December 2008
P U S Š P S N
    Jan »
1234567
891011121314
15161718192021
22232425262728
293031  

Odznaky

Pixmac pictures
Opencaching.cz - Statistika - georgik


Add to Technorati Favorites

PageRank - hodnotenie tejto webstranky
  • 27Dec

    Narazil som na zaujímavý problém v Pythone. Mám nasledujúci kód, ktorý vypíše utf-8 reťazec:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    name = u'žinčica'
    print name

    Pri štandardnom spustením dostanem pekne výstup:

    $ python zincica.py
    
    žinčica

    Keď ale presmerujem výstup do súboru, dostanem nasledujúcu chybu:

    $ python zincica.py >/tmp/ostiepok
    
    ...
    UnicodeEncodeError: 'ascii' codec can't encode character u'\u017e' in position 0: ordinal not in range(128)

    Problém spočíva v tom, že stdout má ako kodek na kódovanie výstupu automaticky nastavený ‘ascii’. Riešenie problému je jednoduché, stačí na stdout prestaviť kodek na utf8:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import codecs
    import sys
    
    sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
    
    name = u'žinčica'
    print name

    Zdroj: http://www.gossamer-threads.com/lists/python/python/701452

    Tags: ,