V imenih datotek je že mogoče uporabljati znake iz Unicode brez sprememb v jedru ali orodjih za delo z datotekami. Temu je vzrok dejstvo, da jedro za ime datoteke sprejme vse, razen zloga "null" in '/', ki je določen za ločevanje podimenikov. Pri kodiranju z UTF-8 se ne-ASCII znaki nikoli ne bodo pretvorili v zlog "null" ali poševnico. Zgodi se le, da ime datoteke ali imenika porabi več zlogov, kot ima znakov v imenu. Na primer ime iz petih grških znakov se bo v jedru prikazalo kot ime iz 10 zlogov. Jedro ne "ve" (in mu tega tudi ni treba "vedeti"), da se ti zlogi prikažejo po grško.
To je splošna teorija, dokler datoteke upravlja samo Linux. V datotečnih sistemih, ki jih uporabljajo tudi drugi operacijski sistemi, pa morate poskrbeti za pretvorbo imen iz/v UTF-8.
TTY je neke vrste dvosmerna cev med dvema programoma, ki omogoča zanimive lastnosti, npr. "odmev" pritisnjenih tipk ali urejanje v ukazni vrstici. V xtermu lahko poženete "cat" brez argumentov, vnesete in urejate lahko poljubno število vrstic, ki se "odbijejo" nazaj vrstica za vrstico. Pri jedru postopki urejanja niso pravilni, še posebej odziv na tipki Backspace in Tab. To odpravite takole:
Potrebovali boste program za pretvorbo vaših lokalno (najverjetneje po ISO-8859-1 ali 2) kodiranih dokumentov v UTF-8 (druga možnost bi bila, da še naprej uporabljate različno kodirane dokumente v istem računalniku, a to dolgoročno ni preveč zabavno). Eden takih programov je `iconv', ki se ga dobi poleg glibc-2.1. Enostavno vtipkajte
$ iconv --from-code=ISO-8859-2 --to-code=UTF-8 < stara_datoteka > nova_datoteka
Tu sta še priročna lupinska skripta "i2u" i2u.sh (za pretvorbo iz ISO v UTF) in "u2i" u2i.sh (za pretvorbo iz UTF v ISO). Prilagodite si ju v skladu z vašim trenutnim 8-bitnim naborom znakov.
Če nimate nameščenega glibc-2.1 in iconv, lahko namesto tega uporabite GNU recode 3.5. "i2u" i2u_recode.sh je "recode ISO-8859-1..UTF-8", in "u2i" u2i_recode.sh je "recode UTF-8..ISO-8859-1". Recode dobite na ftp://ftp.iro.umontreal.ca/pub/recode/recode-3.5.tar.gz ali ftp://ftp.gnu.org/pub/gnu/recode/recode-3.5.tar.gz. Opombe: potrebujete GNU recode 3.5 ali novejšega. Da bi ga prevedli v sistemih brez glibc2 (to so skoraj vsi sistemi Linux razen najnovejših), ga morate nastaviti z možnostjo "--disable-nls", drugače se ne bo povezal. Novejše različice s podporo CJK so na naslovu http://www.iro.umontreal.ca/contrib/recode/.
Namesto tega lahko uporabite tudi CLISP. Na voljo sta tudi "i2u" i2u.lisp in "u2i" u2i.lisp v lispu. Potrebna je različica iz julija 1999 ali novejša. CLISP dobite na naslovu: ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz.
Drugi programi za pretvorbo podatkov, manj zmogljivi od GNU recode, so `trans' ( ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/trans113.tar.gz), `tcs' od operacijskega sistema Plan9 ( ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/tcs.tar.gz) in `utrans' / `uhtrans' / `hutrans' ( ftp://ftp.cdrom.com/pub/FreeBSD/distfiles/i18ntools-1.0.tar.gz) avtorja G. Adama Stanislava ( adam@whizkidtech.net).
Za ponavljajočo se pretvorbo datotek v UTF-8 iz različnih naborov znakov lahko uporabite polavtomatsko orodje: to-utf8 prikaže ne-ASCII dele datoteke uporabniku, da vnese izvirni nabor znakov, potem to pretvori v UTF-8.
Verjetno imate nastavljene naslednje spremenljivke okolja, ki se nanašajo na locale:
nadomešča LC_MESSAGES, uporablja jo samo GNU gettext
nadomešča vse druge spremenljivke LC_*
posamezne spremenljivke za: vrsto znakov in kodiranje, sporočila v naravnem jeziku, pravila za urejanje, obliko številk, obliko denarnih zneskov, prikaz datuma in časa
privzeta vrednost za vse spremenljivke LC_*
man 7 locale
', če vas zanima podrobnejši opis.)
Vsaka od spremenljivk LC_* in LANG lahko obsega ime locale naslednje oblike.
jezik[_območje[.nabor_znakov][@modifikator]
kjer jezik pomeni kodo jezika po ISO 639 (z malimi črkami), območje pomeni kodo države po ISO 3166 (z velikimi črkami), nabor_znakov je samoumeven, modifikator pa označuje posebne značilnosti (npr. posebno narečje, nestandardno črkovanje).
Spremenljivka LANGUAGE lahko obsega več imen localov, ločenih s podpičji.
Če želite sistemu in vsem programom povedati, da uporabljate UTF-8, morate vsem imenom locale dodati končnico UTF-8. Če ste npr. uporabljali
, ga boste spremenili vLC_CTYPE=sl_SI
.LC_CTYPE=sl_SI.UTF-8
Spremenljivke okolja LANGUAGE vam ni treba spreminjati. GNU gettext omogoča pretvorbo prevodov v pravo kodiranje. Dokler ne izide glibc-2.2, morate le nastaviti spremenljivko okolja OUTPUT_CHARSET.
glibc-2.2 ne bo potreboval te spremenljivke, saj jo bo znal sam izpeljati iz spremenljivke LC_CTYPE.$ export OUTPUT_CHARSET=UTF-8
Če imate nameščen glibc-2.1, glibc-2.1.1 ali glibc-2.1.2, najprej z uporabo "localdef --help" preverite, ali je sistemski imenik za razporeditev znakov enak /usr/share/i18n/charmaps. Nato popravite datoteko /usr/share/i18n/charmaps/UTF8 z ustreznim popravkom glibc21.diff, glibc211.diff ali glibc212.diff. Zatem naredite podporno datoteko za vsak UTF-8 locale, ki ga nameravate uporabljati, npr.:
. Tu morate podati absolutno pot, sicer bo localedef naredil locale v imeniku "sl_SI.utf8", kar ne bo delovalo z XFree86-4.0.1.$ localedef -v -c -i sl_SI -f UTF8 /usr/share/locale/sl_SI.UTF-8
Največkrat vam ni treba narediti localov "de", "fr" ali "sl" brez končnice za državo, ker te locale največkrat uporabljajo samo spremenljivka LANGUAGE, ne pa spremenljivke LC_*, LANGUAGE pa samo nadomešča LC_MESSAGES.
Glibc-2.2 bo podpiral večzložne locale, še posebej locale UTF-8, ki smo jih naredili malo prej. Glibc-2.1.x pa tega v resnici ne podpira. Zato bo edini učinek prej omenjene izdelave datotek /usr/share/locale/sl_SI.UTF-8/* ta, da bo `setlocale(LC_ALL,"")' vrnil "sl_SI.UTF-8" v skladu z vašimi spremenljivkami okolja, namesto da bi odrezal končnico ".UTF-8".
Če želite dodati podporo locale UTF-8, boste morali prevesti in namestiti naslednje tri knjižnice:
Potem bodo v vsakem programu, ki uporablja te spremenljivke okolja, funkcije v libutf8_plug.so, libiconv_plug.so in libintl_plug.so nadomestile prvotne v /lib/libc.so.6. Če vas zanimajo podrobnosti o LD_PRELOAD si oglejte "man 8 ld.so".$ export LD_PRELOAD=/usr/local/lib/libutf8_plug.so:/usr/local/lib/libiconv_plug.so:/usr/local/lib/libintl_plug.so
Vsega tega ne bo več treba počenjati, ko izide glibc2-2.