🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #51950

Re: "Piekło" kodowania ...

#51950
From: Maciej Zielenkieiwcz
Date: Thu, 15 Jul 2010 17:09
76 lines
4507 bytes
On 2010-07-15 13:07, mrek <marq@iq.pl> wrote:
> Dnia Wed, 14 Jul 2010 22:22:52 +0200, Szymon Sokół napisał(a):
>
>> On 14 Jul 2010 19:03:00 GMT, mrek wrote:
>> 
>>> Dziękuję za "światło" nauki. Za sprowadzenie mnie z myślowych manowców.
>>> ;-) W takim razie dokumentacja Encode wprowadza lekkie zamieszanie.
>> Nie, dokumentacja jest bardzo jasna, jeśli się oczywiście rozumie
>> angielski.
>> 
>>> Wg mojego rozeznania dekodowanie odtwarza z nieczytelnej postaci do
>>> czytelnej a tutaj jest jakby odwrotnie.
>> 
>> decode() konwertuje z konkretnego kodowania (w tym wypadku ISO-8859-2)
>> do wewnętrznej reprezentacji Perla (czyli Unicode), a encode() odwrotnie
>> - z reprezentacji wewnętrznej do wskazanego kodowania (w tym wypadku
>> CP-1250). "Czytelna" jest każda z tych postaci, oczywiście.
>> 
>>> Dokumentacja podaje że decode zwraca string a nie sekwencję bitowo
>>> kodowanych znaków.
>> 
>> A cóż to jest "sekwencja bitowo kodowanych znaków"?? Wszystkie znaki są
>> kodowane bitowo, jak zresztą cała informacja w komputerze. A string jest
>> oczywiście sekwencją znaków, więc to zdanie powyżej jest trochę jakby
>> bez sensu.
>
> Ok. Rozumiem ton wypowiedzi. Rozumiem aluzję odnośnie języka angielskiego.
>
> Trochę semantyki zatem:
> kodowanie (encode)
> jest metodą przeobrażenia jawnej formy wiadomości w formę ukrytą
>
> dekodowanie (decode)
> Proces zamiany nieczytelnej (zakodowanej) informacji na zrozumiałą
> dla jakiegoś urządzenia (np. peceta), programu lub człowieka.

Nie, nie ukrytą, tylko zakodowaną. Właśnie to jest istotna różnica. 
W jakiś sposób zakodowane są obie fomry, natomiast żadna nie jest
ukryta. Można się spierać, która forma jest łatwiejsza do odczytania,
ale różnica jest niewielka, a dyskusja raczej jałowa.

> wynik działania decode
> \x{118}\x{d3}\x{104}\x{15a}\x{141}\x{17b}\x{179}\x{106}\x{143}
> \x{119}\x{f3}\x{105}\x{15b}\x{142}\x{17c}\x{17a}\x{107}\x{144}

No niezupełnie. Znaczki polskie w UTF-8 są (co najwyżej) dwubajtowe, i
żadnych \x ani klamerek tam nie ma, więc ta postać nie jest aż taka zła:

$ perl -MEncode -e 'print(encode("utf-8",decode("iso-8859-2", "ĘÓĄŚŁŻŹĆŃ\nęóąśłżźćń")))'|xxd
0000000: c498 c393 c484 c59a c581 c5bb c5b9 c486  ................
0000010: c583 0ac4 99c3 b3c4 85c5 9bc5 82c5 bcc5  ................
0000020: bac4 87c5 84                             .....


> mimo najszczerszych chęci nie uznam tego za czytelną postać
> w odróżnieniu od takiej 
>
> ĘÓĄŚŁŻŹĆŃ
> ęóąśłżźćń   co jest wynikiem działania encode

Ale to uważanie jest "osobiste". Mój terminal uważa tylko ISO-8859-2 za
postać czytelną, ale terminal kolegi - tylko UTF-8. Wybór tego, co jest
a co nie jest zakodowane nie jest obiektywny, tylko estetyczny.

> W kwestii "sekwencja bitowo kodowanych znaków" moja wina
> zły dobór słów. Mowa jest o oktetach.
> Rozumiem też aluzję odnośnie wiedzy na temat
> sposobu przetwarzania informacji przez komputer.

To nie była żadna aluzja :-). Po prostu trzeba "poczuć się komputerem",
żeby przyjęta filozofia wydawała się naturalna, a system jest
zaprojektowany z myślą o pracy w wielu kodowaniach "na świecie", i jednym
wybranym "wewnątrz", co pewnie nie pomaga jeżeli pisze się program który
używa tylko dwóch kodowań. Do takich rzeczy można użyć funkcji
from_to(), ale chcialem poprawić przykład, bo jest to pewnie bardziej
pouczające.
Technical Details
Message-ID: <i1nfcj$sv9$1@io.staszic.waw.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.staszic.waw.pl!not-for-mail
References: <4c3cfa30$0$17099$65785112@news.neostrada.pl> <i1jtps$6v8$1@io.staszic.waw.pl> <4c3e09e3$0$2596$65785112@news.neostrada.pl> <1m8reb578n2bc.dlg@falcon.sloth.hell.pl> <4c3f0810$0$2599$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.staszic.waw.pl!not-for-mail
From: Maciej Zielenkieiwcz <mzielenkiewicz@gmail.com>
Newsgroups: pl.comp.lang.perl
Subject: Re: "Piekło" kodowania ...
Date: Thu, 15 Jul 2010 17:09:39 +0000 (UTC)
Organization: XIV LO im. S. Staszica w Warszawie
Lines: 76
Message-ID: <i1nfcj$sv9$1@io.staszic.waw.pl>
References: <4c3cfa30$0$17099$65785112@news.neostrada.pl> <i1jtps$6v8$1@io.staszic.waw.pl> <4c3e09e3$0$2596$65785112@news.neostrada.pl> <1m8reb578n2bc.dlg@falcon.sloth.hell.pl> <4c3f0810$0$2599$65785112@news.neostrada.pl>
NNTP-Posting-Host: io.staszic.waw.pl
Mime-Version: 1.0
X-Trace: news.net.icm.edu.pl 1279213803 20405 94.240.45.200 (15 Jul 2010 17:10:03 GMT)
X-Complaints-To: usenet@news.net.icm.edu.pl
NNTP-Posting-Date: Thu, 15 Jul 2010 17:10:03 +0000 (UTC)
User-Agent: slrn/0.9.9p1 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit