Régebbi Linux felhasználóknak talán már bizonyos korábbi fájljai is UTF-8 kódolást használtak, de talán még a régi Latin-2 kódolást. A könnyebb kezelhetőség érdekében ezeket célszerű egységesen UTF-8 kódolásra alakítani. A kódolás két fő területet érint: a fájlok neveit, illetve tartalmukat.
A Windows és a Linux gyökeresen különböző filozófiát követ a fájlnevekben szereplő ékezetek terén. A Windows már nagyon régen átállt egységes Unicode alapú megoldásra. Így az ő területén (FAT, VFAT, NTFS stb. típusú partíciókon) lévő fájlneveket elvileg mind Windows, mind UHU-Linux 2.0 alól helyesen kell látnunk. Ezek a fájlnevek tehát remélhetőleg nem szorulnak átnevezésre. Ahol inkább adódhat probléma, azok a Linux partíción (ext2, ext3, reiserfs stb.) található ékezetes fájlnevek, ezeket könnyen lehet, hogy át kell alakítanunk. (Megjegyzés: az UHU-Linux 1.1 és 1.2 is sok helyen UTF-8 kódolást használt a fájlnevekben, így nem kizárt, hogy azokat rendben találjuk.)
Fájlneveink manuális átalakítására gyakorlatilag bármelyik fájlkezelő program átnevezés funkciója használható, ez nem érdemel több említést.
Fájlneveink automatizált, tömeges átalakítására a parancssoros (terminálból indítható) convmv parancsot ajánljuk. Angol nyelvű használati útmutatója a „man convmv” parancs kiadása után olvasható. Néhány példa a használatára:
A „-f Latin2” a régi, a „-t UTF-8” opció pedig az új karakterkészletet adja meg. Ezeket tehát változatlan formában érdemes használni.
A „-i” kapcsoló használata esetén a program plusz megerősítést vár minden egyes átnevezés előtt.
A „-r” opció hatására az argumentumokban megadott könyvtárakba belelép és rekurzív módon az azon belüli fájlokat és alkönyvtárakat is átnevezi. Ennek elhagyása esetén csak magát a megadott könyvtárat nevezi át.
A parancsot először mindig a „--notest” kapcsoló nélkül futtassuk, ekkor a program kiírja, hogy mit tenne, de azt nem teszi meg. Ha a kimenettel elégedettek vagyunk, akkor hajtsuk végre újra a parancsot, immár a „--notest” kapcsolót is megadva, ez fogja elvégezni a tényleges átnevezést.
A convmv beépített intelligenciával rendelkezik, nem nevezi át azokat a fájlokat, melyek neve már érvényes UTF-8 sztring. Ily módon bátran ráereszthető vegyesen Latin-2 és UTF-8 fájlneveket tartalmazó könyvtárstruktúrára, az eredmény egységes UTF-8 kódolás lesz.
A Rock Ridge kiterjesztésben a hosszú fájlnevek a Linux filozófiáját követve egy meg nem nevezett ASCII-kompatibilis karakterkészletben állnak. Ez praktikusan magyar fájlnevek esetén a régebben készült CD-k esetén valószínűleg ISO-8859-2, míg az újabban írt CD-k esetén valószínűleg UTF-8 kódolást jelent. Sajnos ha egy CD-n ISO-8859-2 karakterkészletben állnak a Rock Ridge fájlnevek, akkor azt nem lehetséges futási időben UTF-8 kódolásúvá alakítani, vagyis a fájlnevek nem fognak helyesen megjelenni.
A Joliet kiterjesztésben a Windows filozófiájához igazodva a fájlnevek mindenképpen egy rögzített, Unicode alapú kódolástban (UTF-16) állnak (csakúgy, mint VFAT és NTFS fájlrendszereken). Ezek a fájlnevek tehát a régen kiírt CD-ken éppúgy helyesek kell hogy legyenek, mint az újonnan írtakon. A Linux kernel a háttérben automatikusan elvégzi az átalakítást ez a karakterkészlet és az UTF-8 között, így régi és új CD-inken egyaránt jól kell hogy látszódjanak a fájlnevek, amennyiben a Joliet kiterjesztés van használatban.
Ha egy CD-n mindkét kiterjesztés megtalálható, akkor a Linux kernel a Rock Ridge-et használja, mivel csak ez nyújt lehetőséget a Unix fájlattribútumok (tulajdonos, futtatási jog stb.) tárolására. Ha a helyesen megjelenő ékezet fontosabb számunkra, a CD-t csatoljuk a „norock” mount-opcióval, ekkor a kernel a Joliet kiterjesztésből fogja venni a fájlnevet.
A grafikus fájlszerkesztők (például gedit) általában lehetőséget nyújtanak arra, hogy fájl beolvasásakor, valamint elmentésekor megadjuk a karakterkészletet. Indítsuk el például a gedit-et, majd a Fájl -> Megnyitás menüpont alatt válasszuk ki a fájlt és annak régi karakterkészletét.
VIGYÁZAT! Lehetőség szerint ne az Automatikus felismerést válasszuk. Ez az opció képes ugyan megtippelni, hogy a fájl kódolása UTF-8 vagy sem, viszont ha nem az, akkor esélye sincs azt megmondani, hogy Latin-1 vagy pedig Latin-2, és Latin-1-re fog tippelni. Ennek az lesz az eredménye, hogy magyar ő és ű betűk helyett hullámos õ és kalapos û betűk fognak a fájlban szerepelni.
A megnyitás után a Fájl -> Mentés másként menüpont segítségével mentsük el korábbi nevén, UTF-8 kódolást kiválasztva.
Parancssoros átalakításhoz az iconv vagy a recode program használható. Pár példa használatukra:
Ha a forrás vagy cél karakterkészletet elhagyjuk, akkor mindkét program a rendszer aktuális karakterkészletét képzeli oda. Így az UHU-Linux alapértelmezett UTF-8 beállításának használata esetén a fenti parancsok tovább egyszerűsíthetők:
Az iconv nem képes helyben átalakítani a fájlt, a recode viszont igen, ezért ha gyors megoldásra van szükség, általában a recode az egyszerűbb. Ugyanakkor ha maradandóbb megoldást alkotunk (például szkriptet írunk), ajánlottabb az iconv használata, mivel az standardabb eszköz, több rendszeren található meg, mint a recode.
A convmv-vel ellentétben a fenti két program egyike sem képes csak a nem érvényes UTF-8 fájlokon elvégezni az átalakítást. Ha erre van szükségünk (például tömegesen kívánunk vegyesen Latin-2 és UTF-8 kódolású fájlokat egységesen UTF-8 kódolásúra hozni), akkor például az iconv paranccsal végeztethetünk egy UTF-8 -> UTF-8 próba átalakítást. Ha ez sikeres volt, akkor a fájl már érvényes UTF-8 kódolású, ellenkező esetben nem az. Íme egy egyszerű példa egy ilyen szkriptre, amely az argumentumban megadott fájlneveket feltételesen alakítja át Latin-2-ről UTF-8-ra:
#!/bin/sh for i; do if ! iconv -f UTF-8 -t UTF-8 <"$i" >/dev/null 2>&1; then iconv -f Latin2 -t UTF-8 <"$i" >"$i.tmp" && mv "$i.tmp" "$i" fi done
Amennyiben HTML fájljainkat átalakítjuk, a fejlécben megnevezett karakterkészletet is át kell írni, vagy ha ilyen még nem szerepelne, akkor itt az ideje hogy felvegyük:
<head> ... <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ... </head>
Sajnos azonban a web szerver a HTTP fejlécben is megnevezhet karakterkészletet, és ha így tesz, akkor az a karakterkészlet felülbírálja a html fájlban szereplőt.
Az apache web szerver konfigurációs fájljában az AddDefaultCharset direktívát tegyük inaktívvá, vagy állítsuk „UTF-8”-ra az értékét, avagy a kiszolgált fájlok könyvtára (például ~/public_html) alatt hozzunk létre egy .htaccess fájlt ezzel a tartalommal:
AddDefaultCharset UTF-8
Ennek a megközelítésnek nagy előnye, hogy nemcsak a html fájlokra, hanem minden egyébre (például sima szöveges .txt fájlok, könyvtár tartalmának kilistázása) is vonatkozni fog, így a túlsó fél böngészője ezeket is helyesen UTF-8-ként fogja értelmezni.
Ha oldalainkat PHP szkript generálja, a megfelelő HTTP fejlécről egy
header("Content-Type: text/html; charset=UTF-8");függvényhívás gondoskodhat. Ezt a függvényt még az előtt kell meghívni, hogy a php kód bármit is elkezdene kiírni a honlap (html fájl) részeként.
Fontos lehet tudni, hogy az átalakítást követően a form-ok adatait is UTF-8 kódolásban fogjuk megkapni a távoli fél böngészőjétől.
LaTeX (.tex) fájljainkban is használhatunk UTF-8 ékezetkódolást, ehhez mindössze az inputenc csomagot kell betöltenünk utf8 argumentummal a dokumentum fejlécében:
\documentclass[...]{...} ... \usepackage[utf8]{inputenc} ... \begin{document} ...