🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27531

Re: String, unicode, dziwny problem i 5 pytań - długie

#27531
From: Piotr Pastuszka
Date: Sat, 19 Jun 2010 09:55
75 lines
4548 bytes
Użytkownik "marrgol" <marspamrgol@gspammail.com> napisał w wiadomości 
news:4c1c02fb$0$2585$65785112@news.neostrada.pl...
> On 2010-06-18 20:36, Jan Kaliszewski wrote:
> Sam zwykle stosuję to drugie, ale pamiętając o tym, że np. w Windows
> domyślnie kodowanie w okienku poleceń (cmd) i w samym systemie są
> różne, co można łatwo sprawdzić wykonując skrypt:
>
>  #coding:utf-8
>  import locale, sys
>  print "preferred encoding is", locale.getpreferredencoding()
>  print "default encoding is", sys.getdefaultencoding()
>  print "stdout encoding is", sys.stdout.encoding
>
> Bez przekierowania otrzymujemy np. taki wynik:
>
>  preferred encoding is cp1250
>  default encoding is ascii
>  stdout encoding is cp852
>
> a z przekierowaniem taki:
>
>  preferred encoding is cp1250
>  default encoding is ascii
>  stdout encoding is None
>
> Normalnie więc koduję zawartością sys.stdout.encoding, a jeśli
> jest nieokreślona (None) używam albo locale.getpreferredencoding(),
> albo jakiegoś z góry określonego (najczęściej UTF-8).

Witam
dzięki za wyjaśnienia Twoje i p. Jana Kaliszewskiego.
Twoja wypowiedź jest prawie poprawnym wyjasnieniem niuansów, z któych część 
w międzyczasie zauważyłem:
np to że jak robię przekierowanie (  | lub > , >>) to zmienia się kodowanie 
na None.

Ale  Twoja wypowiedź jak i poprzednika nie wyjaśniła WPROST czemu ten sam 
skrypt, uruchomiony w ten sam sposób na tym samym komputerze u jednego 
użytkownika działa tak, a u drugiego inaczej.

W Twoim opisie powyżej napisałeś wprost jakie są kodowania w zależności od 
kontekstu i w zależności czy jest przekierowanie czy nie. A moje 
doświadczenie sugeruje, że nie jest to stałe (zmienia w zależności od 
użytkownika i zastanawia mnie która opcja systemowa za to odpowiada).

Ja jeszcze przed Waszą odpowiedzią robiłem tak:
encoding=stdout.encoding
#if encoding==None: encoding='CP852'
#if encoding==None: encoding='CP1250'
if encoding==None: encoding='ISO-8859-2'
# a potem kodowałem do powyższego kodu z tekstu w formacie unicode.

Tzn brałem encoding, a gdy gdy było puste to ustawiałem jakieś na próbę.
W wyniku testów wyszło mi że w przypadku przekierowania 'ISO-8859-2' na 3 
osobach było prawie OK, tzn niepoprawnie wyświetla litera ś.

Mając teraz Wasze wyjaśnienia postaram spróbować zrobić kod działający 
zawsze.
O wynikach poinformuję jeżeli kogoś to zaintersuje, natomiast jest jeszcze 
jedno 2 pytania w tym kontekście.

1.
Czy w przypadku Pythona 3.0 ten problem (różne kodowanie w zależności od 
uruchomienia kontekstu oraz w zależności czy jest przekierowanie) został 
rozwiązany? Mógłbym zrobić test, ale mogą być specyficzne wyniki, więc skoro 
się na tym znasz to wolę zapytać, no i ja musiałbym zainstalować ponownie 
3.0, a już odinstalowałem.

2
Czy ktoś kto korzystał z PyScripter może tam używać polskich znaczków?
Uruchamiałem ten program na 2 komputerach i okazało się, że nie mogę użyć 
tam polskich znaczków. Tzn przełączają mi się pozycje w lewym okienku. Nie 
wiem czy możliwe, by ktoś wypuścił tak wadliwy edytor, czy też znowu 
działają jakieś lokalne ustawienia powodujące, że PyScripter staje się 
bezużytecznym edytorem dla kogoś uzywającego polskich znaczków. 
Technical Details
Message-ID: <hvi476$k8r$1@node1.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.nask.pl!news.nask.org.pl!newsfeed.atman.pl!not-for-mail
References: <hvb91g$rpp$1@node2.news.atman.pl> <op.veidzb06fvx12t@jerzozwiesz.localdomain> <4c1c02fb$0$2585$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!news.nask.pl!news.nask.org.pl!newsfeed.atman.pl!not-for-mail
From: "Piotr Pastuszka" <piotr.pastuszka@wp.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: String, unicode, dziwny problem i 5 pytań -
 długie
Date: Sat, 19 Jun 2010 11:55:55 +0200
Organization: ATMAN
Lines: 76
Message-ID: <hvi476$k8r$1@node1.news.atman.pl>
References: <hvb91g$rpp$1@node2.news.atman.pl> <op.veidzb06fvx12t@jerzozwiesz.localdomain> <4c1c02fb$0$2585$65785112@news.neostrada.pl>
NNTP-Posting-Host: 212.180.209.73
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1276941350 20763 212.180.209.73 (19 Jun 2010 09:55:50 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sat, 19 Jun 2010 09:55:50 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5931
X-Antivirus: avast! (VPS 100618-1, 2010-06-18), Outbound message
X-Antivirus-Status: Clean
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit