Megjegyzések a magyar ékezetes betűkkel kapcsolatban

A pandora-t és valerie-t átállították UTF-8 kódolásra. A panda ISO-8859-2 (más szóval közép-európai Windows, más szóval Latin2) kódolást használ.

Röviden és hosszabban segíteni szeretnék abban, hogy ne legyen gond az ékezetekkel kapcsolatban.

Röviden (annak, akit csak a recept érdekel):

  1. Azon a gépen (a saját gépén, vagy a laborban levő gépen), amin (közvetlenül) dolgozik, állítson be ISO-8859-2 kódolást. (A továbbiakban a kiindulási gépnek ezt a beállítását alapbeállítás-nak nevezem.)
  2. Vagy a panda-n dolgozzon, vagy a másik kettő valamelyikén úgy, hogy utóbbiakon bejelentkezés után lefuttatja a c parancsot.
    Ha a saját Linux gépén dolgozik, akkor az "export LC_ALL=C" sort vagy tegye a login scriptjébe, vagy (amennyiben LC_ALL=ISO-8859-2 a beállítása) a sort parancsot használó scriptek elejére.

Az előbbiek technikai megvalósítása:

    • Ha Windowsban, putty-al dolgozik, akkor hajtsa végre az ábra szerinti beállítást, és tárolja el az eredményét.
      Translation=ISO-8859-2

    • Ha karakteres Linux ablakban dolgozik, tegye a login scriptjébe az alábbi sorokat:
      case `tty` in
       *tty*) unicode_stop
              setfont lat2-16 -m 8859-2
              loadkeys hu
              export LINGUAS= LC_ALL=hu_HU LANGUAGE=hu_HU LANG=hu_HU;;
      esac

      A "C" is megfelelő beállítás a "hu_HU" helyett, ezt használja, ha a saját gépén készíti el a beadandókat!

    • Ha X-Windowsban, KDE-Konsole-lal dolgozik, akkor a "Beállítások" menü "Kódolás" menüpontjában válassza a "Közép-európai (iso-8859-2)" kódolást.

      Ha el akarja menteni a beállítást, az alábbi három módszer valamelyike bizonyára segít (nekem háromféle gépen más-más megoldás működött ezek közül):

      • A "Beállítások" menü "Kódolás" menüpontjában hajtsa végre a "Mentés alapbeállításként" menüpontot.
      • Ha az előbbi "nem működik", akkor előtte módosítsa a "konsole" hívását. Jobb egérbillenytyűvel az ikonon válassza ki a "Tulajdonságok"-at, abban az "Alkalmazás"-t, abban a "Parancs" ez legyen:
            konsole --config /home/user_id/kde_konsole.conf
        Más fájlnevet is adhat, az a lényeg, hogy az "user_id" helyére a saját azonosítóját tegye.
      • Ha ez sem működik, akkor a "Parancs"-ot így módosítsa:
            konsole --profile alma
        Más nevet is írhat az "alma" helyett.
        Ezután a módosítást a "Beállítások" menü "Save Sessions-Profile" (angol KDE-ben) menüpontjában mentse el "alma" nevű "profile"-ként.

  1. A login scriptjébe beépítheti, hogy a pandora-n (és valerie-n) is "C" beállítások legyenek érvényben.
    case `hostname` in
     pandora|valerie) export LANG=C LANGUAGE=C LC_CTYPE=C LC_ALL=C;;
    esac
Az olvassa tovább, akit részletek és összefüggések is érdekelnek.

Az angol ABC kiváltságos helyzetben van, a többinek az "egyéb" jelei hányatott sorsúak a számítógépeken. Az angol ABC betűinek 7-bites kódja van, úgy, hogy az ABC-be rendezés egyszerű kódérték szerinti (numerikus) rendezés. Az európaiak betűi az ISO-8859-es kód szabványban a felső byte tartományba kerültek, oda is egymást váltva (az egyes nemzeteké), és nem nemzeti ABC sorrendben. Másoké (kínai, japán, héber, stb.) oda sem férnek be. Ezek tárolására találták ki az Unicode szabványt, aminek a különböző kódolásai egynél több byte-ot használnak a szóbanforgó jelek kódolására.

Az alábbi példában a panda-n, ISO-8859-2-es alapbeállítás mellett fájlba tettem az "aeoáéő" jeleket, majd előállítottam a fájl UTF-8 és UTF-16 kódolású megfelelőit.
ISO-8859-2, UTF-8, UTF16

A példában szereplő "hd" (hexa dump) program egyéb Unixból lett Linuxba befordítva. A pand(or)a-n a "/h/public/c/csa/hd" fájlban megtalálható. (De 2008 októberben nincs is rá szükség, pillanatnyilag tartalmaz hd parancsot a Linux installáció.)

Látható, hogy az ISO-8859-2 egy jellel kódolja az áéő betűket is, az UTF-8 az angol ABC betűit ugyanígy, az áéő betűket viszont 2-2 jellel. Az UTF-16 mindent (még a sorvége jelet is) két jellel, a szöveg két kezdőjele jelzi, hogy UTF-16 kódolású a szöveg. Az ő betű az egyes kódolásokban:

ISO-8859-20xF5
UTF-160x5101
UTF-80xC591

Ha more paranccsal megnézzük a fájlokat, akkor akár a panda, akár a pandora azt mutatja jól, ami a kiindulási gépen beállított kódolásnak (alapbeállítás) megfelel.

Alapbeállítás: ISO-8859-2Alapbeállítás: UTF-8

A putty ill. konsole programokhoz az első részben leírt módon lehet UTF-8-as alapbeállítást is létrehozni.

A példából úgy tűnik, hogy csak az alapbeállítás számít, de ha a pandora/panda környezetváltozó beállítások nem felelnek meg az alapbeállításnak, akkor ékezetes betűk beírásakor "furcsa dolgok" történnek. Ezt mindenki kipróbálhatja maga, nem sok öröme lesz benne. Konkrétan ez azt jelenti, hogy a panda-ra ISO-8859-2-es alapbeállítással menjünk, a pandora-ra pedig vagy UTF-8-al (de ne a beadandók miatt), vagy ISO-8859-2-vel (a beadandók miatt), de utóbbi esetben a c paranccsal állítsuk át a panda-hoz hasonló viselkedésre.

A pandora-n az alias parancs mutatja a lehetséges környezetváltozó beállításokat.
pandora alias beállítások

Sok program viselkedése függ ezektől a beállításoktól. Pl. a pine levelezőprogramban "C" beállítással nem tud ékezetes betűket beírni. Vagy pl. a sort eszerint rendez. Jól vagy rosszul, lassabban vagy gyorsabban (pl. az UTF-8-as rendezés több nagyságrenddel lassabb lehet, mint a "C"-s).

Sajnos a pand(or)a rendezőprogramja "hu_HU" beállításra - szerintem - hibás. Az alábbi példa mutatja, hogy jó sorrendbe rakja az ékezetes betűket, de a helyközöket, pontot semmibe veszi, emiatt elég furcsa a rendezés eredménye.
Rendezés

Még váratlanabb az, hogy hu_HU.UTF-8 (vagyis utf8) beállítás esetén (pandora, valerie) a reguláris kifejezések "[A-Z]"-je a kisbetűket is jelenti!!!

Van, aki szerint ez jó, mert ez az "akadémiai rendezési szabály". Szerintem súlyos hiba a dolog. Ha egy rendszerben van kis-/nagy-betű megkülönböztetés, akkor egy program módosíthatatlan beállítása nem lehet az, hogy ettől eltekint. A sort-nak van "-f" opciója, a grep-nek van "-i" opciója arra, hogy ne különböztesse meg a kis- és nagybetűket, az ellenkezőjére viszont nincs opciójuk. A "-f" ill. "-i" ilyen kéretlen bekapcsolása - jelkódolástól függően - több, mint udvariatlan lépés.

Tehát a sort program használata esetén NE válasszon ISO-8859-2-es (azaz "hu_HU") környezetváltozó beállításokat.

Van, amikor mégis kellhet "hu_HU". A pand(or)a-n a rev csak ekkor hajlandó magyar ékezetes jeleket tartalmazó sorokat is feldolgozni! Ehhez elég a megfelelő script elejére betenni az export LC_ALL=hu_HU sort. (Az itt szereplő másik három környezetváltozót a man bash szerint az LC_ALL felülbírálja, de "biztos, ami biztos" alapon mindig állíthatjuk mind a négyet.)

A jövő várhatóan az UTF-8 egyre nagyobb elterjedését hozza majd. Addig is írjuk majd egymásnak a sok alig olvasható ékezetekkel telerakott, vagy ékezetek nélkül makogó levelet. Bábel tovább büntet.

Végül megjegyzem, hogy minden itt leírt "bölcsesség"-re rá tudnak cáfolni egyes gépek ill. helyzetek.


Csizmazia Albert csa@inf.elte.hu