Article View: pl.comp.lang.python
Article #27531Re: String, unicode, dziwny problem i 5 pytań - długie
From: Piotr Pastuszka
Date: Sat, 19 Jun 2010 09:55
Date: Sat, 19 Jun 2010 09:55
75 lines
4548 bytes
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-mailReferences:
<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