'ascii' codec can't encode character u'\xf3'
xslom03 at vse.cz
Wed Aug 18 08:23:41 CEST 2004
ok, thanks for your time while answering my questions.
my python is
Python 2.3.3 (#1, May 1 2004, 16:13:07)
[GCC 3.2.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
so im fine with it -- just a strange thing that it has used ascii, if
sys default is ISO-8859-2.
on the other hand: no matter now -- im 'overencoded' -- and i will
explicitly call conversion function from now on in my python scripts
(those are not programs :) to ensure myself everything is fine
i see that the solution i came with was quite right, though i didnt
much understand it. now i know how it works and im satisfied.
thanks to all of you.
On Tue, Aug 17, 2004 at 08:17:41PM +0200, "Martin v. Löwis" wrote:
> Martin Slouf wrote:
> >>- print a repr() of the unicode object instead of
> >> the unicode object itself. This will work on all
> >> terminals, and show hex escapes of non-ASCII characters.
> >just to make sure:
> >override the object's __repr__(self) method to st. like:
> >class my_string(string):
> > def __repr__(self)
> > tmp = unicode(self.attribute1 + " " + self.attribute2)
> > return tmp
> >and use 'my_string' class without any worries instead of classical
> No. Assume yyy is a Unicode object which potentially contains
> non-printable characters. Instead of doing
> print yyy
> print repr(yyy)
> >my system is debian GNU/Linux stable, im using it for a very, very long
> >time, though i did not changed any terminal settings but the very
> >basics. My locales are properly set, im using LC_* environment
> >variables to set default locale to czech environment with ISO-8859-2
> >charset. Terminal is capable of displaying 8bit charsets, im not sure
> >about unicode charsets -- never tried, never needed.
> I see. Could it be that you are using Python 2.1, then? Because in
> Python 2.3, printing Czech characters to the terminal should work
> just fine. Please do
> Python 2.3.4 (#2, Aug 5 2004, 09:33:45)
> [GCC 3.3.4 (Debian 1:3.3.4-7)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import sys
> >>> sys.stdout.encoding
> >if 0:
> > # Enable to support locale aware default string encodings.
> > import locale
> > loc = locale.getdefaultlocale()
> > if loc:
> > encoding = loc
> >so i guess it is never done :(
> You don't need to change the default encoding. Instead,
> sys.stdout.encoding is used for printing to the terminal (in 2.3 and
> >did you yourself changed it?
> No. It will work out of the box.
> >well, if a piece of information like you gave to me was contained in
> >standard python documentation, probably there will be less
> >misunderstanding about this issue.
> What piece specifically are you referring to? It is all mentioned
> in the standard Python documentation.
> >#! /usr/bin/env python
> ># -*- coding: UTF-8 -*-
> >at the begginnig of my every script, the example above still has to
> >be converted -- because of the iso-8859-1 you use in "Löwis"?
> Yes, and no. Yes, it still has to be converted. UTF-8 is *not*
> Unicode; it is a byte encoding, and you cannot mix Unicode
> strings and byte strings. No, if I use UTF-8 in my source code,
> then "Löwis" will be encoded in UTF-8, not in ISO-8859-1.
> >can i ommit the conversion (ie. is it done automatically for me as if
> >i write
> >u"Martin v. " + unicode("Löwis", "ISO-8859-1")
> You can, but you shouldn't. So I won't tell you how you could do that.
> >dont understand -- which library?
> The ODBC library, for example, or PyQt.
More information about the Python-list