radekp@konto.pl <radekp@konto.pl> napisał(a):
Nie będę się sprzeczał, bo zapewne masz rację.
Na poglądzie hex widzę, że ł to $B3.
To jest Windows-1250. W DOS-owej CP852 literka ł to $88.
Piszę chcp 1250 na początku skryptu i wówczas nie mam problemu z
PL-literkami w nazwach plików. Wyświetlają się poprawnie itp.
To całkiem dobre podejście. Trzeba tylko uważać żeby skrypt miał faktycznie
to kodowanie, żeby używany edytor go nie zmienił.
Najwyraźniej skrypt był jednak w 1250, tylko Lister tak rozpoznał. Ale i
przy zmianie z DOS Charset na Windowsa charset nadal widzę PL-literki
poprawnie, przynajmniej "ł" i "ś".
Nie wiem jak działa Lister, ale zmiana kodowania może oznaczać różne rzeczy.
Jedna rzecz to jest kodowanie użyte do wyświetlenia pliku. Druga to
kodowanie użyte do zapisu pliku. Przykład: zrobiłem sobie dla testu plik z
polskimi literami w kodowaniu 852. Otwieram go w Notepad++. Mam krzaki, bo
program założył, że plik jest Win1250. Klikam Format -> Zestaw znaków ->
środkowoeuropejski -> OEM 852. Literki zaczęły wyglądać poprawnie. Ale czy
coś się zmieniło w pliku? Nic. Na dysku jest to, co było. Po prostu
Notepad++ zaczął inaczej wyświetlać bajty znalezione w pliku. Dopiero jak
kliknę Format -> Konwertuj na format UTF-8 to następuje faktyczna zmiana na
dysku. Co ciekawe myślałem, że Konwertuj na format ANSI przekonwertuje na
Win1250, ale nic się nie wydarzyło, pozostało 852.
Albo pójść za ciosem i wybrać coś współczesnego,
czyli UTF-8 (chcp 65001).
Chętnie, o ile skrypt nadal będzie poprawnie widział PL-literki w nazwach
plików.
Zasada jest ta sama: kodowanie pliku musi się zgadzać z chcp.
Wspominam o UTF-8 bo jest to kodowanie, które obecnie dominuje, ale nie
trzeba na siłę na nie przechodzić, przynajmniej w skryptach. Na pewno nie
warto trzymać się 852.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
|