Charset nazw plików

Paweł Sakowski pawel w sakowski.eu.org
Nie, 30 Lis 2003, 02:34:53 CET


> 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).

I tak właśnie robię. A konkretnie bez sufiksów .utf8, to się załatwia
odpowiednim parametrem do localedef.

> 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)
- open(argv[1],O_RDONLY)!=-1 || perror(argv[1]); (walą się krzaczki
jeśli kodowanie konsoli != kodowanie nazw plików)

> Znaki i kodowania pojawiają się dopiero w środowisku z interfejsem
> użytkownika i tam należy to rozwiązać.

I w shellowych globach :P. Zresztą, żeby rozwiązanie było skuteczne,
musiałoby być wszędzie jednakowe. A jest:

- w glib-1: kodowanie locale
- w glib-2.0: UTF-8 lub locale wg. G_BROKEN_FILENAMES
- w glib-2.3: dowolne wg. G_FILENAME_ENCODING lub j.w.
- w mount: wg. -oiocharset=...
- w KDE: nie wiem, ale pewnie jakoś po swojemu.
- w sh: kodowanie locale, pod warunkiem że 1 znak<->1 bajt

Każda próba rozwiązania tego galimatiasu dla przypadku dowolnego
FILENAME_ENCODING prowadziłaby do patchowania 3/4 programów. Stąd
pytanie: czy ktoś widzi jakieś przeciwwskazania (jakie?), żeby jako
standard przyjąć kodowanie_nazw == kodowanie_locale == UTF-8? Podobno  w
RedHacie były z tym jakieś problemy (jakie?). Przy tym założeniu możnaby
popatchować co trzeba (domyślny iocharset dla mounta, znaczenie
pytajnika w shellu i co się jeszcze nawinie). Czekam na argumenty
przeciw (nie wątpię, że będą).

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). Wtedy osoby przyzwyczajone do ISO 8859-2
mogłyby na własną odpowiedzialność działać po staremu (ryzykując
problemy jak ten, który zaczął niniejszy wątek).

Swoją drogą nie za bardzo wiem, do czego służyć ma kodowanie "locale".
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 :) Chyba można przyjąć
przynajmniej, że konsola jest kodowana w kodowaniu locale, chociaż też
bywa z tym różnie (np. w gnome-terminal można to ustawić). 

Pytanie: Czy ktoś widzi jakieś przeciwwskazania (jakie?), żeby 

-- 
+----------------------------------------------------------------------+
| Paweł Sakowski <pawel w sakowski.eu.org>            Never trust a man  |
|                            who can count up to 1023 on his fingers.  |
+----------------------------------------------------------------------+
-------------- następna część ---------
Załącznik, który nie był tekstem został usunięty...
Name: nie znany
Type: application/pgp-signature
Size: 189 bytes
Desc: Ceci est une partie de message
	=?ISO-8859-1?Q?numériquement?Url : /mailman/pipermail/pld-devel-pl/attachments/20040626/7bc8f90b/attachment.bin


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