Le vendredi 27 décembre 2013 12:37:17 UTC+1, Steven D'Aprano a écrit :
(e-mail address removed) wrote:
can I ask you for help? when I try to print s[0] i vane the message:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1:
ordinal not in range(128). how to solve my problem, please?
What version of Python?
What operating system?
What environment are you running in? IDLE? The shell or cmd.exe? Powershell?
xterm? Something else?
Please copy and paste the complete traceback, starting from the line
Traceback (most recent call last):
to the end.
Please print repr(s[0]) and show us the output.
What do you expect?
The representation is - and should be -
u'\u0105\u017c\u0119\u0142\u0144'
independently of the tool one uses to process such
a code.
Now, if one prints s[0], the result may be - and should be -
different from the tool.
win console, cp850
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python27\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-4: cha
win console, cp1252
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-4: cha
win console, cp1250
s = [u'\u0105\u017c\u0119\u0142\u0144']
print s[0] ążęłń
SciTE editor, output pane "locale", cp1252 for me.
Traceback (most recent call last):
File "utrick.py", line 18, in <module>
print u'\u0105\u017c\u0119\u0142\u0144'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
SciTE editor, output pane 65001
Traceback (most recent call last):
File "utrick.py", line 18, in <module>
print u'\u0105\u017c\u0119\u0142\u0144'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
Now in IDLE, Western European version of Windows,
one get this
ążęłń
Note, by chance it is printing something. It may
come it does not print, understand, render chars
at all. *This is wrong*.
My interactive interpreter I wrote for Py2.*
(full of dirty tricks).
print repr(s[0]) u'\u0105\u017c\u0119\u0142\u0144'
print s[0]
?????
*This is correct*, it is an expected result and it
works for all chars.
A (the) correct way to print s[0] with a console (all
platforms).
print s[0].encode(sys.stdout.encoding, 'replace') ?????
See the another thread about printing repr().
jmf