[Tutor] same output on diferent sys.stdout.encodings

Kent Johnson kent37 at tds.net
Thu Feb 8 15:38:46 CET 2007


Paulino wrote:
> Hi everyone!
> 
> I have some strings that include special characters, to be displayed in 
> widget labels ( PyQt4 ).
> The output changes in diferent OS's due to diferent sys.stdout encoding
> 
> Not only the labels in the GUI change, but the source file strings are 
> altered when I move from win to linux and vice-versa.
> 
> The solution I found for now was to replace the special characters in 
> the source file string for their representation:
> I replaced "é" (e acute ) by "\xe9" wich correpsond to chr(233) in the 
> cp1252 encoding.
> 
> The character é (e acute) in linux is not recognized in the source file, 
> neither in IDLE nor in Kate
> My win sys.stdout.encoding is cp850 and the linux one is utf-8
> 
> Now I have "d\xe9bito" instead of "débito" (debit in portuguese). By 
> passing the string through unicode with the convinient encoding, I 
> ensure the labels are exibithed the same  in every OS but, this way the 
> code is not very readable.
> 
> Is there a way of solving this, keeping the more readable?

I think the problem you are having is with the source code encoding, not 
sys.stdout.encoding. Probably your editor on linux expects a different 
file encoding than what you are using in Windows. Your windows editor is 
probably using cp1252; perhaps the linux editor expects utf-8.

You need to get the editors to agree on the source code encoding. Then 
put the coding declaration at the top of the file as Michael suggested.

Kent



More information about the Tutor mailing list