On Feb 2, 2011 8:28:24PM +0100, Olav Vitters wrote:
> On Wed, Feb 02, 2011 at 07:11:08PM +0100, Tobias Mueller wrote:
> > Heya,
> >
> > I haven't had a look at the scripts, but maybe I can still contribute
> > something.
> >
> > On 02.02.2011 15:29, Olav Vitters wrote:
> > > Problem is the handling of encoded data.
> > When you read() the data, immediately decode() it with the proper
> > encoding so that the data will become a Unicode object, i.e.
> > fileobject.read().decode('utf-8').
>
> The UTF-8 is coming from http://git.gnome.org/repositories.doap (Máirín
> Duffy). I'm not sure if Python sees that as UTF-8 or not. And perhaps
> there is a mix of UTF-8 and non-UTF-8. How could I check the variables
> what encoding Python thinks it is in? type(variable)?
>
> At least I figured out how to reproduce the error on the server...
>
> # /home/admin/bin/handle-ldap-modules sync
> works
>
> # /home/admin/bin/handle-ldap-modules sync | cat
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 1573: ordinal not in range(128)
>
> (same error as forwarded)
>
> --
> Regards,
> Olav
If my understanding is correct, Python has an internal string
representation which you can reveal:
a = 'hi'
b = unicode(a)
print type(a)
print type(b)
but which you aren't really concerned with. To handle input, just use
the decode() function and to handle output, use encode().
I think that the problem is not within python but with the environment.
What's the output of "locale" as your user and as the user owning the
crontab?
Attachment:
signature.asc
Description: Digital signature