python UnicodeEncodeError ?
Mateusz Korniak
mateusz w ant.gliwice.pl
Czw, 6 Paź 2005, 09:02:17 CEST
On Thursday 06 of October 2005 02:17, Jakub Piotr Cłapa wrote:
> Jakub Krajniak wrote:
> > Witam,
> > w dwóch programach jak na razie dostaje następujące błędy:
> > [teodor w server src]$ quodlibet --help
> > Traceback (most recent call last):
> > File "/usr/bin/quodlibet", line 221, in ?
> > process_arguments()
> > File "/usr/bin/quodlibet", line 162, in process_arguments
> > opts, args = options.parse()
> > File "/usr/lib/quodlibet/quodlibet.zip/util.py", line 119, in parse
> > File "/usr/share/python2.4/encodings/iso8859_2.py", line 18, in encode
> > UnicodeEncodeError: 'charmap' codec can't encode character u'\xb7' in
> > position 28: character maps to <undefined>
> > [to z quodlibet --help]
> > a to z mojego programiku, który działał wcześniej (nie wiem przed jakim
> > to wydarzeniem działał):
> > media name: Human 12
> > Try to add Ewelina Flinta - Dziwny Jest Ten Świat (Koncert).mp3:
> > (Dziwny Jest Ten Świat (Koncert)) title:
> > (Ewelina Flinta) artist:
> > album:
> > Traceback (most recent call last):
> > File "./mp3kat.py", line 10, in ?
> > interface.cmdloop()
> > File "/usr/share/python2.4/cmd.py", line 142, in cmdloop
> > File "/usr/share/python2.4/cmd.py", line 219, in onecmd
> > File
> > "/home/users/teodor/project/python/mp3kat/src/mp3kat/cInterface.py",
> > line 51, in do_add_media
> > self.cmd.add_media(cd_name,path)
> > File
> > "/home/users/teodor/project/python/mp3kat/src/mindexer/cCommand.py",
> > line 45, in add_media
> > File "/home/users/teodor/project/python/mp3kat/src/mp3kat/mp3kat.py",
> > line 50, in add_entry
> > title = unicode(title)
> > UnicodeDecodeError: 'ascii' codec can't decode byte 0xa6 in position 16:
> > ordinal not in range(128)
Skoro to Twój program to konieczna lekka poprawka.
unicode() traktuje argument jako string w aktualnym kodowaniu (ustawionym
przez locale).
Przypuszczalnie title masz zakodowane w iso więc użyj:
title = title.decode("iso8859-2")
> > jakieś takie podobne błędy wyskakują, pytanie, czy czegoś mi brakuje w
> > systemie czy też mam coś zaktualizować? Zrobiłem już upgrade pythona do
> > 2.4.2 za ac-main.
>
> Może do AC poszedł Python, w którym wywalona została łatka powodująca
> niedeterministyczne zachowanie Pythona (czyli koercję Unicode z i do
> encoding wziętego z aktualnego locale).
E-e. Zachowanie jest jak najbardziej deterministyczne - str/locale po prostu
używają ustawień z locale. Tak stanowi std Pythona.
Jeśli była łatka która coś tutaj zmieniała to b. dobrze że wyleciała.
> Prawdopodobnie programiki do
> poprawki (muszą explicite wybierać kodowanie z jakiego chcą korzystać,
> bo domyślnie jest ascii).
Dokładnie tak z poprawką że domyślnie jest z locale.
--
Mateusz Korniak
"Black holes are where God divided by zero." - Steven Wright
Więcej informacji o liście dyskusyjnej pld-users-pl