🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
6 messages
6 total messages Started by klops Thu, 23 Sep 2010 19:30
python 3.1 print i krzaki - ratunku!!!
#27683
Author: klops
Date: Thu, 23 Sep 2010 19:30
32 lines
2126 bytes
Witam

Zaczynam program w python 3.1 (przesiadka z 2.x) i od razu mam problem z 
drukowaniem na konsoli. Pewnie to banał, jednak nie mogę znaleść w 
google nic na ten temat (???). Dodam tylko, że chcaiłbym by program 
działał tak jak w wersji 2.x czyli na Linux i Windows NT. Nie jestem 
pewien, czy na konsoli Windows w ogóle można uzyskać ten znak ©, bo w 
poprzedniej wersji też wypisuje krzaki... Więc mam dodatkowe pytanie, 
czy linia:

sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)

To prawidlowe rozwiązanie tej kwesti?


Poniżej nie działający program i jego rezultat:

print("Copyright © Klops")

Traceback (most recent call last):
   File "./xxx.py", line 30, in <module>
     print("Copyright \xa9 Klops")
   File "c:\program files\python 3.1\lib\encodings\cp852.py", line 19, 
in encode
     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xa9' in 
position 10
: character maps to <undefined>


dzięki
klops
Re: python 3.1 print i krzaki - ratunku!!!
#27684
Author: Jordan Szubert
Date: Fri, 24 Sep 2010 03:09
33 lines
2305 bytes
Dnia 23-09-2010 o 21:30:42 klops <klops@klopsserver.pl> napisał(a):

> Witam
>
> Zaczynam program w python 3.1 (przesiadka z 2.x) i od razu mam problem z  
> drukowaniem na konsoli. Pewnie to banał, jednak nie mogę znaleść w  
> google nic na ten temat (???). Dodam tylko, że chcaiłbym by program  
> działał tak jak w wersji 2.x czyli na Linux i Windows NT. Nie jestem  
> pewien, czy na konsoli Windows w ogóle można uzyskać ten znak ©, bo w  
> poprzedniej wersji też wypisuje krzaki... Więc mam dodatkowe pytanie,  
> czy linia:
>
> sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
>
> To prawidlowe rozwiązanie tej kwesti?
>
>
> Poniżej nie działający program i jego rezultat:
>
> print("Copyright © Klops")
>
> Traceback (most recent call last):
>    File "./xxx.py", line 30, in <module>
>      print("Copyright \xa9 Klops")
>    File "c:\program files\python 3.1\lib\encodings\cp852.py", line 19,  
> in encode
>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> UnicodeEncodeError: 'charmap' codec can't encode character '\xa9' in  
> position 10
> : character maps to <undefined>

jak widac, konsola uzywa kodowania cp852, wiec mozesz wypisywac tylko  
znaki mieszczace sie w tym kodowaniu...
Re: python 3.1 print i krzaki - ratunku!!!
#27685
Author: konryd
Date: Fri, 24 Sep 2010 10:59
43 lines
2762 bytes
On 24 Wrz, 05:09, "Jordan Szubert" <n...@podam.na.razie> wrote:
> Dnia 23-09-2010 o 21:30:42 klops <kl...@klopsserver.pl> napisał(a):
>
>
>
>
>
> > Witam
>
> > Zaczynam program w python 3.1 (przesiadka z 2.x) i od razu mam problem z  
> > drukowaniem na konsoli. Pewnie to banał, jednak nie mogę znaleść w  
> > google nic na ten temat (???). Dodam tylko, że chcaiłbym by program  
> > działał tak jak w wersji 2.x czyli na Linux i Windows NT. Nie jestem  
> > pewien, czy na konsoli Windows w ogóle można uzyskać ten znak (c), bo w  
> > poprzedniej wersji też wypisuje krzaki... Więc mam dodatkowe pytanie,  
> > czy linia:
>
> > sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
>
> > To prawidlowe rozwiązanie tej kwesti?
>
> > Poniżej nie działający program i jego rezultat:
>
> > print("Copyright (c) Klops")
>
> > Traceback (most recent call last):
> >    File "./xxx.py", line 30, in <module>
> >      print("Copyright \xa9 Klops")
> >    File "c:\program files\python 3.1\lib\encodings\cp852.py", line 19,  
> > in encode
> >      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> > UnicodeEncodeError: 'charmap' codec can't encode character '\xa9' in  
> > position 10
> > : character maps to <undefined>

Wygląda na to, że Twój plik ze skryptem nie ma zadeklarowanego
kodowania.
Robi się to takim czymś w górze pliku (chyba  w py3 też):
    #encoding=utf-8


pozdrawiam,
Konrad
Re: python 3.1 print i krzaki - ratunku!!!
#27686
Author: klops
Date: Fri, 24 Sep 2010 16:45
11 lines
1649 bytes
> Wygląda na to, że Twój plik ze skryptem nie ma zadeklarowanego
> kodowania.
> Robi się to takim czymś w górze pliku (chyba  w py3 też):
>      #encoding=utf-8

W sarym pythonie robiło się to linią:
# -*- coding: utf-8 -*-

Ale ponoć już to nie działa. Natomiast domyślnie kodowanie źródeł jest w 
utf-8 - to pisze na stronie nowości w python 3.
Re: python 3.1 print i krzaki - ratunku!!!
#27687
Author: klops
Date: Fri, 24 Sep 2010 16:50
23 lines
1772 bytes
> jak widac, konsola uzywa kodowania cp852, wiec mozesz wypisywac tylko
> znaki mieszczace sie w tym kodowaniu...

no dobra zrobiłem tak:
sys.stdout = codecs.getwriter('cp852')(sys.stdout.buffer)

Co daje w wyniku:

Traceback (most recent call last):
   File "lc.py", line 30, in <module>
     print("Copyright \xa9 Klops")
   File "c:\program files\python 3.1\lib\encodings\cp852.py", line 19, 
in encode
     return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xa9' in 
position 10
: character maps to <undefined>


Idealnie było by, gdybym miał autodetekcję kodowania konsoli i 
ustawianie tego kodowania. Jak to zrobić żeby skrypt bezdotykowo (i 
prawidłowo) działał na różnych systemach operacyjnych???
Re: python 3.1 print i krzaki - ratunku!!!
#27688
Author: Jordan Szubert
Date: Sat, 25 Sep 2010 00:43
29 lines
2203 bytes
Dnia 24-09-2010 o 18:50:13 klops <klops@klopsserver.pl> napisał(a):

>
>> jak widac, konsola uzywa kodowania cp852, wiec mozesz wypisywac tylko
>> znaki mieszczace sie w tym kodowaniu...
>
> no dobra zrobiłem tak:
> sys.stdout = codecs.getwriter('cp852')(sys.stdout.buffer)
>
> Co daje w wyniku:
>
> Traceback (most recent call last):
>    File "lc.py", line 30, in <module>
>      print("Copyright \xa9 Klops")
>    File "c:\program files\python 3.1\lib\encodings\cp852.py", line 19,  
> in encode
>      return codecs.charmap_encode(input,self.errors,encoding_map)[0]
> UnicodeEncodeError: 'charmap' codec can't encode character '\xa9' in  
> position 10
> : character maps to <undefined>
>
>
> Idealnie było by, gdybym miał autodetekcję kodowania konsoli i  
> ustawianie tego kodowania. Jak to zrobić żeby skrypt bezdotykowo (i  
> prawidłowo) działał na różnych systemach operacyjnych???

AFAIK to autodetekcja jest, dziala, i wykrywa co trzeba...
i jak bys nie kombinowal, (c) nie wypiszesz na konsoli, ktora tego nie  
obsluguje...
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