V imenih datotek je že mogoče uporabljati znake iz Unicode brez sprememb v jedru ali orodjih za delo z datotekami. Vzrok temu je dejstvo, da jedro za ime datoteke sprejme vse z izjemo 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 pojavilo kot ime iz 10 zlogov. Jedro ne "ve" (in mu tega tudi ni potrebno "vedeti"), da se ti zlogi prikažejo po grško.
To je splošna teorija, dokler z datotekami upravlja samo Linux. V datotečnih sistemih, ki jih uporabljajo tudi drugi operacijski sistemi, 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 ni pravilen. To odpravite na naslednji način:
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 na istem računalniku, kar pa dolgoročno ni preveč zabavno). Eden takšnih 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
Tukaj 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ši. Da ga prevedete na sistemih brez glibc2 (to so skoraj vsi sistemi Linux razen najnovejših), ga morate nastaviti z možnostjo "--disable-nls", sicer se ne bo povezal. Novejše različice s podporo za CJK se nahajajo 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 z julija 1999 ali novejša. CLISP dobite na naslovu: ftp://clisp.cons.org/pub/lisp/clisp/source/clispsrc.tar.gz.
Ostali 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 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 originalni 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 ostale spremenljivke LC_*
posamezne spremenljivke za: tip 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
' za podrobnejši opis.)
Vsaka od spremenljivk LC_* in LANG lahko vsebuje 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 vsebuje več imen localov ločenih s podpičji.
Da sistemu in vsem programom poveste, 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 potrebno spreminjati. GNU gettext ima možnost pretvoriti prevode v pravo kodiranje. Dokler ne izide glibc-2.2, je vse, kar morate storiti to, da nastavite 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.:
Tukaj 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 potrebno narediti localov "de", "fr" ali "sl" brez končnice za državo, ker te locale največkrat uporabljaja 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".
Da dodate podporo za 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. Za več informacij 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.