🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
5 messages
5 total messages Started by Jarek Zgoda Fri, 13 Dec 2002 20:18
Kodowanie znaków w Tkinter
#362
Author: Jarek Zgoda
Date: Fri, 13 Dec 2002 20:18
27 lines
1667 bytes
Próbuję z widgetu Entry pobrać jego zawartość i "przypadkiem" znalazły
się w niej polskie znaki, co spowodowało poniższy wyjątek. Ręce mi
opadły.

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.2/lib-tk/Tkinter.py", line 1292, in __call__
    return apply(self.func, args)
  File "tkentry.py", line 21, in say_hi
    print self.entry.get()
UnicodeError: ASCII encoding error: ordinal not in range(128)

W module sitecustomize.py mam wpisane:
import locale
loc = locale.getdefaultlocale()
if loc[1]:
    encoding = loc[1] #(zwraca ISO8859-2)
sys.setdefaultencoding(encoding)
I kupa...
Co można z tym zrobić?

-- 
Jarek Zgoda
http://www.zgoda.biz/

-- 
Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kodowanie znaków w Tkinter
#363
Author: Maciej Wisniowski
Date: Sat, 14 Dec 2002 22:44
43 lines
2356 bytes
Nie wiem czy to pomoże bo nie używałem nigdy Tkintera, ale ten wyjątek:
"UnicodeError: ASCII encoding error: ordinal not in range(128)", znam aż za
dobrze bo wyskakiwał mi wiele razy przy łączeniu się do zewnętrznych
aplikacji przez COMa i wtedy pomagało mi np coś takiego:

print table.Code.encode('cp1250')

zamiast:

print table.Code


Maciej Wiśniowski

Użytkownik "Jarek Zgoda" <jzgoda@usun.gazeta.pl> napisał w wiadomości
news:20021213211848.34fd5392.jzgoda@usun.gazeta.pl...
> Próbuję z widgetu Entry pobrać jego zawartość i "przypadkiem" znalazły
> się w niej polskie znaki, co spowodowało poniższy wyjątek. Ręce mi
> opadły.
>
> Exception in Tkinter callback
> Traceback (most recent call last):
>   File "/usr/lib/python2.2/lib-tk/Tkinter.py", line 1292, in __call__
>     return apply(self.func, args)
>   File "tkentry.py", line 21, in say_hi
>     print self.entry.get()
> UnicodeError: ASCII encoding error: ordinal not in range(128)
>
> W module sitecustomize.py mam wpisane:
> import locale
> loc = locale.getdefaultlocale()
> if loc[1]:
>     encoding = loc[1] #(zwraca ISO8859-2)
> sys.setdefaultencoding(encoding)
> I kupa...
> Co można z tym zrobić?
>
> --
> Jarek Zgoda
> http://www.zgoda.biz/
>
> --
> Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kodowanie znaków w Tkinter
#364
Author: Jarek Zgoda
Date: Sun, 15 Dec 2002 08:33
41 lines
2446 bytes
Dnia Sat, 14 Dec 2002 23:44:31 +0100
"Maciej Wisniowski" <maciej.wisniowski@euro.coig.pl> pisze:

> Nie wiem czy to pomoże bo nie używałem nigdy Tkintera, ale ten
> wyjątek:"UnicodeError: ASCII encoding error: ordinal not in
> range(128)", znam aż za dobrze bo wyskakiwał mi wiele razy przy
> łączeniu się do zewnętrznych aplikacji przez COMa i wtedy pomagało mi
> np coś takiego:
> 
> print table.Code.encode('cp1250')
> 
> zamiast:
> 
> print table.Code
> 

No i teraz to wygląda o wiele poważniej...

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.2/lib-tk/Tkinter.py", line 1292, in __call__
    return apply(self.func, args)
  File "tkentry.py", line 21, in say_hi
    print self.entry.get().encode('ISO-8859-2')
  File "/usr/lib/python2.2/encodings/iso8859_2.py", line 18, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeError: charmap encoding error: character maps to <undefined>

Tylko że dalej nie wiem, o co chodzi.
Ten trik (z mojego pierwszego postu) z modułem sitecustomize.py i
ustawianiem domyślnego kodowania znalazłem w archiwach comp.lang.python.
Jego autor upierał się, że działa mu to z kodowaniem rosyjskim (KOI-8?).

-- 
Jarek Zgoda
http://www.zgoda.biz/
Life's probably easier if you're a Big Fucking Idiot (tm), but you
cannot expect that nobody will notice. (Frederik Lundh, 01.12.2002)

-- 
Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kodowanie znaków w Tkinter
#366
Author: Jarek Zgoda
Date: Sun, 15 Dec 2002 12:19
25 lines
1800 bytes
Dnia Sun, 15 Dec 2002 12:07:24 +0100
"Maciej Wisniowski" <maciej.wisniowski@euro.coig.pl> pisze:

> Może spróbuj zamiast:
> print self.entry.get().encode('ISO-8859-2')
> 
> napisać:
> 
> print self.entry.get().encode('iso8859-2')
> 
> bo może po prostu nie znalazł takiego kodowania???
> Albo spróbuj innych kodowań... Nie jestem pewny jak to działa ale w
> foderze pythona: lib/encodings są różne możliwie formaty...

W pliku aliases.py jest zdefiniowany alias 'iso_8859_2':
'iso8859_2'. Użyłem obydwu - wynik ten sam.

-- 
Jarek Zgoda
http://www.zgoda.biz/
Life's probably easier if you're a Big Fucking Idiot (tm), but you
cannot expect that nobody will notice. (Frederik Lundh, 01.12.2002)

-- 
Serwis Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Re: Kodowanie znaków w Tkinter
#368
Author: Jarek Zgoda
Date: Tue, 07 Jan 2003 19:29
15 lines
1467 bytes
Yar3k <programisci_listy@muratorDOTcom.pl> pisze:

>>Może spróbuj zamiast:
>>print self.entry.get().encode('ISO-8859-2')
> 
> A "iso-8859-2"? Nie wiem czy można pisać z dużej litery. Ja zawsze
> pisałem z małej i to mi działało.

Te nazwy są aliasowane ("iso-8859-2", "ISO-8859-2" i "ISO8859-2"
wskazują na ten sam obiekt).

-- 
Jarek Zgoda
http://www.zgoda.biz/
jabber:jarek@jabberpl.org|ICQ:178306476|GG:3422968|Tlen:jzgoda
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads