[python] Exec a unicode problem

tezlo tezlo na gmx.net
Pátek Březen 31 13:27:43 CEST 2017


"David Michal" <dmichal na altien.com> wrote:
> Prave ze to tak neplati uplne. Zkus si spustit tohle:
> #!/usr/bin/python
> #-*- coding: utf8 -*-
> 
> sys.stdout
> def out(text):
>     print type(text), unicode(text, 'utf8')
>    
> s = '®lutý kůň.'
> script1 = "out(s)"
> script2 = "out('®lutý kůň.')"
> 
> out(s)
> exec(script1)
> exec(script2)
> 
> exec zrejme kodovani uvedene v hlavicce scriptu nebere v potaz.
> Skonci to chybou.
> 
> Respektive skonci to chybou na vsech systemech, kde:
> python -c 'import sys; print sys.stdout.encoding' vrati neco jineho
> nez UTF-8.

ne a ne

% python -c 'import sys; print sys.stdout.encoding'
ISO-8859-2
% python testenc.py
<type 'str'> ®lutý kůň.
<type 'str'> ®lutý kůň.
<type 'str'> ®lutý kůň.

se spravne nastavenym prostredim si to python zjisti a vystup prekoduje

% python -c 'import locale; print locale.getdefaultlocale()[1]'
ISO8859-2


Další informace o konferenci Python