On 2008-05-14 19:43, Martin v. Löwis wrote:
Hardwiring the encoding is not a good idea, esp. since there
are lots of alternatives for you to get readable output from
PyUnicode object now and without any changes to the interpreter.
E.g.
print '%s' % u.encode('utf-8')
We are talking about Python 3 here, so it is fairly important
that you consider all syntactic and semantic details of Python
3 - otherwise it is not clear whether or not you are aware of
them:
- the print syntax is incorrect
- .encode returns a byte string
- therefore, %s applies __str__ to the byte string, yielding
something like b'...', with hex escapes for the non-ASCII
bytes
Sorry, I was in Python 2 mode.
For Python 3 you don't need the .encode() calls since the
stream will take care of that for you:
# Let sys.stdout take care of the encoding
print('"%s"' % u.transform('unicode-printable'))
# Log to a file:
logfile = open('my.log', 'a', encoding='unicode-printable')
logfile.write('"%s"' % u)
# Using a helper
def unicode_repr(u):
return '"' + u.transform('unicode-printable') + '"'
print(unicode_repr(u))
For the purists: the above assumes that 'unicode-printable'
will encode '"' to '\"'.
BTW: I found that
logfile = open('my.log', 'a', encoding='unicode-printable')
doesn't raise an exception. Only when you call the .write()
method you get the expected:
LookupError: unknown encoding: unicode-printable
Is that intended ? IMO, such errors should not be deferred.
There are many ways to solve your problem.
No. If you strike out those that don't actually work, close
to none remain.
They may look a bit different, but the logic is essentially
the same.
--
Marc-Andre Lemburg
eGenix.com
Professional Python Services directly from the Source (#1, May 14 2008)
>>> Python/Zope Consulting and Support ... http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/
________________________________________________________________________
:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::
eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe:
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com