Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] notepad++ z cyrylica

To: winnt@man.lodz.pl
Subject: Re: [WINNT] notepad++ z cyrylica
From: "Grzegorz Niemirowski" <gnthexfiles@poczta.onet.pl>
Date: Sat, 11 May 2013 12:39:58 +0200
1634Racine <1634@Racine.pl> napisał(a):
"no wiec" sprawdzone juz, operacja musi byc nastepujaca i jest szybka w
n++:
cyrylica w ansi (czyli krzaki) -> zmienic "zestaw znakow" na 1251 (juz
widac cyrylice) ->  konwersja do utf-8 ("utrwalenie" cyrylicy)
Zdaje sie, ze tak to powinno wygladac, bowiem samo "cyrylica/ansi ->
konwersja do utf-8"  nie daje nic, ani przez moment nie widac cyrylicy,
musi byc zmiana znakow na 1251.
dzieki za pomoc.

Oczywiście, że tak. Po "zdaje sie" wnioskuję, że jednak jeszcze potrzebne jest dodatkowe wyjaśnienie, bo chyba mylisz kilka rzeczy. UTF-8 to nie jest jakiś magiczny naprawiacz do krzaków. Jest to kodowanie znaków zapisanych w Unicode. Oprócz UTF-8 Unicode może być zapisane np. jako UTF-16. Lubimy Unicode, bo zastępuje prawie wszystkie inne strony kodowe. Ponadto kodowania takie jak UTF-8 są często automatycznie rozpoznawane przez edytory podczas otwierania pliku. Dlatego używamy Unicode aby uwolnić się od masakry, jaką tworzy mnogość stron kodowych. Ale jak wspomniałem, UTF-8 czy też samo Unicode, nie działa magicznie. Jeśli masz cyrylicę, to edytor tekstu MUSI wiedzieć, że to jest cyrylica. Dlatego musisz zmienić na 1251. W ten sposób informujesz edytor, że te bajty, które on ma w pliku, to jest cyrylica zakodowana w 1251. Plik to ciąg bajtów. Jak nie wskażesz kodowania, to zostanie użyte domyślne, czyli 1250 w polskim Windowsie. Zamiast cyrylicy dostaniesz krzaki, a konkretnie znaczki, które mają takie same kody (wartości bajtów) jak bukwy. Jak to skonwertujesz do UTF-8, to edytor zamieni kody krzaków ANSI na kody krzaków Unicode. I dalej będziesz mieć krzaki, tyle że w Unicode. Nie na bukwy, bo on nie wie, że to cyrylica ma być. W pliku nie ma nigdzie informacji, że to jest cyrylica. Pamiętaj, że wyrażenie "cyrylica w ANSI" znaczy tyle, że ktoś sobie zapisał cyrylicę w postaci pliku ANSI, ale to wcale nie znaczy, że w tym pliku jest cokolwiek co by mówiło, że to jest cyrylica. To jest w pewnym sensie umowa. Umowa, która mówi, że trzeba ten plik wczytywać z kodowaniem 1251. Ale jakiś program może sobie wczytać z innym kodowaniem i trzeba mu ręcznie przestawiać, o ile ma w ogóle taką możliwość. Tak więc musisz wskazać prawidłowe kodowanie zanim przekonwertujesz do Unicode i zakodujesz jako UTF-8. Mówiąc w skrócie i kolokwialnie: skąd UTF-8 ma wiedzieć, że w pliku jest cyrylica jeśli mu tego sam nie powiesz albo nie zmienisz domyślnej strony kodowej w panelu sterowania?

--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 9 days, 12 hours, 24 minutes and 50 seconds

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>