Charset nazw plików (Re: Gnome2 - OpenDialog)

Jacek Konieczny jajcus w pld.org.pl
Sob, 29 Lis 2003, 22:42:00 CET


On Thu, Nov 27, 2003 at 07:58:54PM +0100, Paweł Sakowski wrote:
> Taki scenariusz:
> $ export STOP_BEING_BUGGY_WITH_FILENAMES=1
> $ LANG=pl_PL gedit
> Tworzę plik o nazwie "Paweł"
> $ LANG=es_ES gedit
> File-Open...
> 
> Hej! Kto zmienił mojemu plikowi nazwę na "Pawe" do potęgi trzeciej?

Nikt nie zmienił. Ty kazałeś programowi inaczej to traktować.
Chcesz, żeby nazwa plików była traktowana tak samo niezależnie od
używanego języka? Użyj odpowiedniego locale. Np. pl_PL.utf8 i es_ES.utf8
(oczywiście musisz je mieć zdefiniowane).

> W tym sensie zdecydowanie jest to zachowanie BUGGY. Trochę lepsze jest
> rozwiązanie z GLib 2.3.x: G_FILENAME_ENCODING=ISO-8859-2. Tu już
> zachowanie nie zależy od języka w jakim czytamy teksty, chociaż dalej
> różne programy mogą dostawać różne zachowanie z zależności od zawartości
> środowiska. A przecież zapis danych na dysku jest parametrem systemu, a
> nie środowiska (w odróżnieniu od np. DISPLAY).

System można dostosować do środowiska (parametry iocharset i codepage 
w fstab, czy smb.conf) i na odwrót.

W "Uniksach" nazwa plików to ciąg dowolnych bajtów za wyjątkiem "\000" i
"/". I tak powinno być. Dla systemu plików coś takiego jak "znak" nie
istnieje, bo nie jest potrzebne. "Nazwa plików" równie dobrze może być
binarnym identyfikatorem.

Znaki i kodowania pojawiają się dopiero w środowisku z interfejsem
użytkownika i tam należy to rozwiązać. Globalnie w dystrybucji można to
np. załatwić kompilując domyślnie wszystkie locale z kodowaniem UTF-8.

Pozdrowienia,
        Jacek



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