N
Naoki INADA
In document <http://docs.python.org/library/
stdtypes.html#file.encoding>:
But in logging.StreamHandler.emit() ::
try:
if (isinstance(msg, unicode) and
getattr(stream, 'encoding', None)):
#fs = fs.decode(stream.encoding)
try:
stream.write(fs % msg)
except UnicodeEncodeError:
#Printing to terminals sometimes fails.
For example,
#with an encoding of 'cp1251', the above
write will
#work if written to a stream opened or
wrapped by
#the codecs module, but fail when writing
to a
#terminal even when the codepage is set to
cp1251.
#An extra encoding step seems to be
needed.
stream.write((fs % msg).encode
(stream.encoding))
else:
stream.write(fs % msg)
except UnicodeError:
stream.write(fs % msg.encode("UTF-8"))
And behavior of sys.stdout in Windows::Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position
0-2: ordinal not in range(128)
What is file.encoding convention?
If I want to write a unicode string to a file(-like) that have
encoding attribute, I should do
(1) try: file.write(unicode_str),
(2) except UnicodeEncodeError: file.write(unicode_str.encode
(file.encoding))
like logging?
It seems agly.
stdtypes.html#file.encoding>:
But in logging.StreamHandler.emit() ::
try:
if (isinstance(msg, unicode) and
getattr(stream, 'encoding', None)):
#fs = fs.decode(stream.encoding)
try:
stream.write(fs % msg)
except UnicodeEncodeError:
#Printing to terminals sometimes fails.
For example,
#with an encoding of 'cp1251', the above
write will
#work if written to a stream opened or
wrapped by
#the codecs module, but fail when writing
to a
#terminal even when the codepage is set to
cp1251.
#An extra encoding step seems to be
needed.
stream.write((fs % msg).encode
(stream.encoding))
else:
stream.write(fs % msg)
except UnicodeError:
stream.write(fs % msg.encode("UTF-8"))
And behavior of sys.stdout in Windows::Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position
0-2: ordinal not in range(128)
What is file.encoding convention?
If I want to write a unicode string to a file(-like) that have
encoding attribute, I should do
(1) try: file.write(unicode_str),
(2) except UnicodeEncodeError: file.write(unicode_str.encode
(file.encoding))
like logging?
It seems agly.