Charset nazw plików

Jacek Konieczny jajcus w pld.org.pl
Nie, 30 Lis 2003, 16:16:21 CET


On Sun, Nov 30, 2003 at 02:34:53AM +0100, Paweł Sakowski wrote:
> > System można dostosować do środowiska (parametry iocharset i codepage 
> > w fstab, czy smb.conf) i na odwrót.
> 
> Zgoda. Problem w tym, że nie określając żadnego standardu w systemie (na
> dzień dzisiejszy tak jest) prowadzi się do tego, że każdy program musi
> się znać na locale. Krótka lista programów, które się gubią (testowane
> na $(locale -k charmap)==UTF-8):
> 
> - mc (ramki się krzaczą na nazwach plików z pliterkami)
> - linia poleceń basha (backspace na znaku kilkubajtowym)

To wszystko zdaje się problem ncurses, które zakłada, że jeden znak
(jedna pozycja na terminalu)=jeden bajt. Bez poprawienia ncurses 
i wielu programów z nieko korzystających (w programach też często jest
takie założenie).

> - w mount: wg. -oiocharset=...

IMHO dziwne by było jakby kernel czytał ustawienia locale (które są
bardzo userspace). Po to jest ta opcja, aby ustawienia kernela
dostosować do locale. Może to robić jakiś autoconfigurator na podstawie
locale.

> - w KDE: nie wiem, ale pewnie jakoś po swojemu.

KDE było i jest chore pod tym względem. 

> Oczywiście (w imię niepsucia) każda taka zmiana musiałaby spełniać
> warunek, że nie zmienia działania dla locale!=UTF-8 (być może poza
> uzasadnionymi wyjątkami). 

To ważne założenie, o którym trzeba pamiętać.

> Swoją drogą nie za bardzo wiem, do czego służyć ma kodowanie "locale".

Do określenia kodowania używanego w danym systemie.

> Zdaje się, że w założeniu autorów standardu każdy tekst z jakim się
> program mógłby spotkać na danym systemie miał być w tym samym kodowaniu.
> Założenie piękne, ale dla epoki sprzed MIME :) 

Nie. MIME dotyczy materiałów przesyłanych pomiędzy systemami. Program
komunikujący się z innymi systemami (program pocztowy, czy aplikacja
WEB) nie powinna używać locale w tej komunikacji ale ustalać kodowanie,
język itp. używając mechanizmów danego kanału komunikacyjnego (nagłówek
Content-Type MIME i HTTP, nagłowek Accept-Charset, Accept-Language w
HTTP).


> Chyba można przyjąć
> przynajmniej, że konsola jest kodowana w kodowaniu locale,i

Tak powinno się zakładać.

> chociaż też bywa z tym różnie (np. w gnome-terminal można to ustawić). 

Po takiej zmianie powinny być zmienione ustawienia locale (najlepiej
przed odpaleniem shella w tym terminalu).

Pozdrowienia,
        Jacek



Więcej informacji o liście dyskusyjnej pld-devel-pl