Jak rozpoznać krzaczenie się polskich znaków
UPDATE: Napraw swój pokrzaczony tekst.
Jak wyglądają pokrzaczone polskie znaki, to chyba widział każdy, kto używał komputera dłużej niż od wczoraj. Ale krzaczenie się było zazwyczaj tylko informacją, że coś jest nie tak. Tylko nieliczni potrafili, zobaczywszy na przykład „Pchn±æ w tê ³ód¼ je¿a i o¶m skrzyñ fig.”, powiedzieć „A, to jest iso-8859-2 interpretowane jako iso-8859-1.”
Dzisiaj usiadłem i napisałem skrypt, który przegląda najpopularniejsze kodowania i pokazuje, jak wygląda każda kombinacja interpretacji polskich znaków.
W ostatniej kolumnie widać, czy podczas przetwarzania nie wystąpiły jakieś błędy, na przykład napis w kodowaniu iso-8859-2 nie jest poprawnym napisem w utf-8.
| Prawdziwe | Wzięte za | Wygląda tak... | ok? |
| utf-8 | utf-8 | Pchnąć w tę łódź jeża i ośm skrzyń fig. | ok |
| utf-8 | iso-8859-2 | PchnÄ?Ä? w tÄ? Ĺ?ĂłdĹş jeĹźa i oĹ?m skrzyĹ? fig. | ok |
| utf-8 | iso-8859-1 | PchnÄ?Ä? w tÄ? Å?ódź jeża i oÅ?m skrzyÅ? fig. | ok |
| utf-8 | cp1250 | Pchnąć w tę łódź jeża i ośm skrzyń fig. | ok |
| iso-8859-2 | utf-8 | Pchn w t d jea i om skrzy fig. | ERR |
| iso-8859-2 | iso-8859-2 | Pchnąć w tę łódź jeża i ośm skrzyń fig. | ok |
| iso-8859-2 | iso-8859-1 | Pchn±æ w tê ³ód¼ je¿a i o¶m skrzyñ fig. | ok |
| iso-8859-2 | cp1250 | Pchn±ć w tę łódĽ jeża i o¶m skrzyń fig. | ok |
| cp1250 | utf-8 | Pchn w t d jea i om skrzy fig. | ERR |
| cp1250 | iso-8859-2 | Pchnšć w tę łód? jeża i o?m skrzyń fig. | ok |
| cp1250 | iso-8859-1 | Pchn¹æ w tê ³ód? je¿a i o?m skrzyñ fig. | ok |
| cp1250 | cp1250 | Pchnąć w tę łódź jeża i ośm skrzyń fig. | ok |
Miejmy nadzieję że dzięki unicode takie problemy będą stopniowo odchodziły w niepamięć, ale założę się że mamy przed sobą jeszcze niejedną migrację MySQL albo inną niewyraźną operację która może zamienić nasze narodowe znaki w bezkształtną papkę.
Ten skrypt pokazuje tylko jeden etap krzaczenia. Prawdziwa przygoda zaczyna się, kiedy mamy polskie znaki pokrzaczone nie jedno-, ale dwukrotnie!
08 marca 2008 o 17:07:55
iso-8859-1iso-8859-1Pchn w t ód jea i om skrzy fig.ERR
Innymi słowy: albo moja przeglądarka nie interpretuje iso-8859-1, albo tekst w *-1 interpretowany jako tekst w *-1 nie wyświetla polskich znaków.
08 marca 2008 o 17:09:11
Crash: W zasadzie, to tych wierszy nie powinno być w tabelce, bo ten napis nie może być przedstawiony w iso-8859-1. Usunę je.
08 marca 2008 o 17:48:30
czasem też można zobaczyć 4 literki w kwadraciku
a ja ostatnio walczyłem ze zmianą nazw w cyrylicy na unicode – wyglądało to mniej wiecej tak:(wejsciowego kodowania nie znałem)
for i in `convmv —list`; do convmv —qfrom -f $i -t UTF8 14\ -\ Ò‰êö’å\ Ž’ƒŒö©ê\ ã\ èƒåŒØêåŒØ.mp3 ;done
a potem tylko trzeba było wybrać odpowiednie (najłądniejsze – znaczy się ;)
08 marca 2008 o 19:08:20
Z tym MySQL’em to faktycznie jaja sa. Mialem jedna konwersje ze starego na nowego SQL’a i musialem szybko wydumac jak zrobic gladkie przejscie. Udalo sie, ale chwilami bylo ciezko.
08 marca 2008 o 19:46:49
Ej no, co to za Microsoftowy tekst? Co się stało z „Zażółć gęślą jaźń” ? :P
08 marca 2008 o 20:04:06
BTM: Zażółć gęślą jaźń ma za mało liter bez akcentów, jak się pokrzaczy, to już tak strasznie, że w ogóle nie widać, jakie to były słowa. Nie upieram się, jestem otwarty na propozycje. :-)
08 marca 2008 o 21:12:43
— Tylko nieliczni potrafili powiedzieć zobaczywszy na przykład „Pchn±æ w tê ³ód¼ je¿a i o¶m skrzyñ fig.”, powiedzieć „A, to jest iso-8859-2 interpretowane jako iso-8859-1.”
— Bardzo ciekawy artykuł i spostrzeżenie, Maćku! Dzięki! A skrypt na pewno wypróbuję w wolnej chwili!
08 marca 2008 o 21:16:17
PS: „Pchnąć w tę łódź jeża lub ośm skrzyń fig” nie ma nic wspólnego z Microsoftem. To zdanie, które zawiera każdą literę polskiego alfabetu dokładnie raz i dlatego jest szczególnej wartości do tego celu idealne. Istnieje jeszcze kilka takich zdań. Patrz Pangram@Wikipedia
08 marca 2008 o 21:33:08
Joanno, wiem, co to Pangram. A z Microsoftem ma więcej wspólnego niż Ci się wydaje – wystarczy pogooglać (+ dodać słowo „office”, bodaj w Word’dzie jest) Tymniemniej, o wiele częściej stosuje się gęślą jaźń bo jest szybsze do wpisania i takoż zawiera wszystki polskie znaki diakrytyczne :)
08 marca 2008 o 23:41:50
To, że Microsoft wbudował w Worda trick który wypisuje ten pangram ileśtam razy z automatu nie robi z niego jeszcze „microsoftowego tekstu”, bez przesady. Mogę sobie napisać program, który mi to zrobi w dowolnym edytorze, to jeszcze nie znaczy, że to będzie „asiowy tekst”. Tylko o to mi chodzi. Ale nie zaśmiecajmy Gospodarzowi komentarzy. Microsoftem. :P
09 marca 2008 o 21:57:53
Niestety, tak to bywa, że tzw WebMajsterzy nie wiedzą o co chodzi z kodowaniem bazy danych i klienta bazy danych…
Wielokrotnie widziałem jak np utf-8 było wrzucane do pól zdefiniowanych jako iso8859-1. co powodowało spore problemy z ewentualnym importem.
Oczywiście jak ktoś chce to się uda, zrobić wszystko i tak.
W przypadku – mysql+php – mysqli_client_encoding(); – postgres+php – pg_client_encoding();
gdy zakładamy bazę – mysql – set names [kodowanie] i dodatkowo zakładając tabele musi być ustawioene odpowiednie collation. _ci(case insensitive) _bi(case sensitive) – postgres – -E [kodowanie]
a na stronie to chyba nawet dzieci wiedzą, że w meta to się ustawia a dodatkowo wysyła się w nagłówkach.
korzystając z tak niewielkiej ilości informacji można już sporo zdziałać i spowodować, że kodowanie nie będzie bolączką...
Pozdrawiam
13 marca 2008 o 19:32:31
Napraw swój pokrzaczony tekst
Niedawno poszła plotka, że napisałem skrypt który rozpoznaje pokrzaczone polskie literki. Postanowiłem nadgonić plotkę i naprawdę go napisałem.
Tym razem jest to dostępny on-line skrypt, do którego można wkleić pokrzaczony polski tekst,[...]