Ubuntu märkide moonutuse lahendamine: põhjalik juhend eestikeelse toe seadistamiseks

目次

1. Sissejuhatus

Ubuntu kasutamisel võib teatud olukordades esineda veidraid märke (character corruption). Näiteks terminali väljundis, eestikeelsete failinimede kuvamisel, brauseris eestikeelsete lehtede vaatamisel – sümptomid varieeruvad olenevalt keskkonnast. Eelkõige ei kuvata paljudel juhtudel vaikesätetega eesti keelt õigesti ja vajalikud on sobivad seadistused.

Käesolevas artiklis selgitatakse Ubuntu’s tekkivate märkide moonutuse põhjuseid ja konkreetseid lahendusi. Sihtrühmaks on järgmised kasutajad:

  • Ubuntu algajad, kes pole veel eestikeelset kuva seadistanud.
  • Need, kes soovivad teada märkide moonutamise põhjust ja otsivad põhimõttelist lahendust.
  • Need, kellel esineb terminalis või GUI keskkonnas märkide moonutusi ja kes soovivad teada, kuidas sellega toime tulla.

Vaatame nüüd Ubuntu peamisi märkide moonutamise põhjuseid.

2. Märkide moonutamise peamised põhjused

Lokaadi seadistuse puudused

Ubuntu lokaat (locale) on keskkonnaseade, mis määrab süsteemi keele ja kuupäeva formaadi. Kui see pole õigesti seadistatud, ei pruugita eesti keelt kuvada või tekib märkide moonutus.

Näiteks kui käivitate käsu locale ja see kuvab “C” või “POSIX”, on võimalik, et lokaat pole õigesti seadistatud.

$ locale
LANG=C
LC_ALL=

Eestikeelses keskkonnas oleks soovitav, et LANG=et_EE.UTF-8 oleks sarnane.

Fondide puudumine või ebapiisavus

Ubuntu vaikeolekus ei pruugi eestikeelsed fondid olla installitud. Seetõttu ei pruugita eestikeelset teksti õigesti kuvada ja selle asemel võivad ilmuda ruudud (□) või arusaamatud sümbolid.

Eriti on fondi puudumist märgata järgmistes olukordades:

  • GUI rakenduste menüüd või nupud on moonutatud.
  • Tekstiredaktoris eesti keeles avades on tekst moonutatud.

Märgikoodi mittevastavus

Ubuntu’s kasutatakse standardina peamiselt UTF-8, kuid kui avate faili, mis on kodeeritud teises märgikoodis, nagu Shift_JIS või EUC-JP, võib esineda märkide moonutusi.

Näiteks Windowsi keskkonnas loodud faili Ubuntu’s avades võivad ilmneda järgmised nähtused:

  • Tekstiredaktoris avades kuvatakse arusaamatuid sümboleid.
  • Terminalis käsu cat käivitamisel on tekst rikutud.

Terminali või redaktori seadistusvead

Kui terminal või redaktor pole õigesti seadistatud, ei pruugita isegi UTF-8-ga kodeeritud faile õigesti kuvada.

  • Terminali kodeeringu seade ei ole UTF-8.
  • Vim’i või VSCode’i redaktorites ei toimi automaatne märgikoodi tuvastamine.
  • Käskudega less või cat kuvamisel on eestikeelne osa asendatud “?” või “◇” märgiga.

3. Lokaadi seadistuse kontrollimine ja parandamine

Lokaadi seadistuse kontrollimise meetod

Kõigepealt käivitage järgmine käsk, et kontrollida praegust lokaadi seadistust:

locale

Väljundi näide:

LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

Sel juhul on LANG=C, mis näitab, et eestikeelne keskkond pole korralikult seadistatud. Eestikeelses keskkonnas oleks soovitav, et see oleks järgmine:

LANG=et_EE.UTF-8
LC_ALL=et_EE.UTF-8

Eestikeelse lokaadi installimine ja seadistamine

1. Eestikeelse lokaadi kontrollimine ja lisamine

Süsteemi installitud eestikeelse lokaadi kontrollimiseks käivitage järgmine käsk:

locale -a | grep et_EE

Väljundi näide:

et_EE.iso885915
et_EE.utf8

Kui et_EE.utf8 ei ole loendis, peate installima eestikeelse lokaadi.

Eestikeelse lokaadi lisamiseks käivitage järgmised käsud:

sudo apt update
sudo apt install -y language-pack-et

Seejärel käivitage lokaadi aktiveerimiseks järgmised käsud:

sudo locale-gen et_EE.UTF-8
sudo update-locale LANG=et_EE.UTF-8

2. Süsteemi lokaadi seadistamine

Lokaadi muudatuste süsteemiüleseks rakendamiseks käivitage järgmised käsud:

export LANG=et_EE.UTF-8
export LC_ALL=et_EE.UTF-8

Selle seadistuse püsimiseks lisage see faili ~/.bashrc või ~/.profile.

echo 'export LANG=et_EE.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=et_EE.UTF-8' >> ~/.bashrc
source ~/.bashrc

Või, kui soovite seda rakendada kõigile kasutajatele, redigeerige järgmist faili:

sudo nano /etc/default/locale

Lisage või muutke järgmist sisu:

LANG=et_EE.UTF-8
LC_ALL=et_EE.UTF-8

Seadistuste rakendamiseks logige välja ja uuesti sisse või taaskäivitage süsteem.

4. Fontide installimine ja seadistamine

Eestikeelsete fontide vajalikkus

Ubuntu vaikeolekus ei pruugi eestikeelsed fondid olla installitud. Seetõttu ei pruugita eestikeelset teksti õigesti kuvada ja selle asemel võivad ilmuda ruudud (□) või arusaamatud sümbolid.

Eriti on fondi puudumist märgata järgmistes olukordades:

  • GUI rakenduste menüüd või nupud on moonutatud.
  • Tekstiredaktoris eesti keeles avades on tekst moonutatud.

Soovitatavad eestikeelsed fondid

Ubuntu’s saab kasutada järgmisi eestikeelseid fonte:

Fondi nimiOmadused
Noto Sans CJK JPGoogle’i pakutav kvaliteetne jaapani font (vaikeväärtusena soovitatav). Eestikeelse teksti jaoks toimib Noto Sans hästi.
Ubuntu Font FamilyUbuntu süsteemi vaikefont, mis toetab paljusid keeli, sealhulgas eesti keelt.
Droid Sans FallbackLaiendatud märgistikuga font, mis sisaldab palju erinevaid keeli.
Liberation Sans/Serif/MonoLisaks Ubuntu vaikefontidele pakuvad need ka head ühilduvust.

Fontide installimise meetod

1. Noto Sans CJK JP (vaikeväärtusena soovitatav font)

sudo apt update
sudo apt install -y fonts-noto-cjk

Märkus: Kuigi see on “CJK JP”, sisaldab see laia valikut Unicode’i märke, mis on piisavad ka eesti keele jaoks.

2. Ubuntu Font Family

sudo apt install -y fonts-ubuntu

3. Droid Sans Fallback

sudo apt install -y fonts-droid-fallback

4. Liberation Fonts

sudo apt install -y fonts-liberation

Pärast installimist taaskäivitage süsteem või värskendage fondi vahemälu, et seadistused rakenduksid.

fc-cache -fv

Fondide seadistamise meetod

GUI rakenduste fondiseaded

  1. Avage rakendus “Seaded”.
  2. Avage jaotis “Fondid”.
  3. Muutke “Standardfont”, “Dokumendifont” ja “Püsiva laiusega font” soovitud fondiks.
  4. Logige välja ja uuesti sisse, et seaded rakenduksid.

Terminali fondiseaded

  1. Avage terminal.
  2. Valige menüüst “Eelistused” → “Profili redigeerimine”.
  3. Märkige jaotises “Tekst” ruut “Kasuta kohandatud fonti”.
  4. Valige soovitud font (nt Noto Sans Mono CJK JP).
  5. Salvestage seaded ja taaskäivitage terminal.

Seadistuste rakendamine ja kontrollimine

Fondi seadistuste õigsuse kontrollimiseks proovige järgmisi meetodeid:

  1. Kontrollige installitud fonde käsuga fc-list.
fc-list | grep "Noto"
  1. Kontrollige eestikeelset kuva terminalis.
echo "Tere, Ubuntu märkide moonutuse lahendus"
  1. Kontrollige, kas eestikeelne tekst kuvatakse GUI rakendustes (Firefox, LibreOffice jne) õigesti.

5. Märgikoodi kontrollimine ja teisendamine

Mis on märgikood?

Märgikood on reeglite kogum, kuidas märke digitaalsete andmetena käsitleda. Levinumad märgikoodid on järgmised:

MärgikoodOmadusedPeamine kasutusala
UTF-8Mitmekeelne tugi, standard LinuxisUbuntu ja veebiarendus
Shift_JISJaapani keelele spetsialiseeritud, domineeriv WindowsisWindowsi rakendused, vanemad süsteemid
EUC-JPKasutati UNIX-i süsteemidesVanemad Linuxi süsteemid
ISO-2022-JPKasutatakse meilides ja teatud keskkondadesE-kirjade saatmine ja vastuvõtmine

Ubuntu’s kasutatakse standardina UTF-8, seega kui avate faili, mis on salvestatud mõnes muus märgikoodis, võib esineda märkide moonutusi.

Faili märgikoodi kontrollimise meetod

1. Kasuta käsku file

file -i sample.txt

Väljundi näide:

sample.txt: text/plain; charset=iso-8859-1

2. Kasuta käsku nkf (kui installitud)

sudo apt install -y nkf
nkf --guess sample.txt

Väljundi näide:

Shift_JIS (CRLF)

Märgikoodi teisendamise meetod

1. Kasuta käsku iconv

Näide Shift_JIS → UTF-8 teisendamiseks:

iconv -f SHIFT_JIS -t UTF-8 sample.txt -o sample_utf8.txt

Näide EUC-JP → UTF-8 teisendamiseks:

iconv -f EUC-JP -t UTF-8 sample.txt -o sample_utf8.txt

2. Kasuta käsku nkf

Näide Shift_JIS → UTF-8 teisendamiseks:

nkf -w sample.txt > sample_utf8.txt

Näide EUC-JP → UTF-8 teisendamiseks:

nkf -w --overwrite sample.txt

Märkide moonutuse lahendused terminalis ja redaktorites

1. Käsu less kasutamine õigeks kuvamiseks

export LESSCHARSET=utf-8
less sample.txt

2. vim’i kasutamine märgikoodi määramiseks avamisel

vim -c "set encoding=utf-8" sample.txt

3. Märgikoodi muutmine programmis gedit või VSCode

  • gedit (GNOME’i standardredaktor)
  1. Avage fail käsuga gedit sample.txt.
  2. Salvestamisel nimega muutke “Kodeering” väärtuseks UTF-8.
  • VSCode (Visual Studio Code)
  1. Klõpsake ekraani allservas “Kodeering”.
  2. Teisenda UTF-8-ks.

6. Terminali ja redaktori seadistuste kontrollimine

Terminali seadistuste kontrollimine ja parandamine

1. Terminali kodeeringu seadistuse kontrollimine

Praeguste keskkonnamuutujate kontrollimiseks käivitage järgmised käsud:

echo $LANG
echo $LC_ALL

Väljundi näide (kui õigesti seadistatud)

et_EE.UTF-8
et_EE.UTF-8

Kui see on C või POSIX, on vaja see muuta sobivaks lokaadiks (et_EE.UTF-8).

2. Terminali fondiseaded

GNOME Terminal (vaiketerminal)

  1. Avage terminal.
  2. Avage menüüst “Seaded”.
  3. Avage “Profiili redigeerimine” → “Teksti” sakk.
  4. Lubage “Kasuta kohandatud fonti” ja valige üks järgmistest:
  • Noto Sans Mono CJK JP (eestikeelsete märkide jaoks piisav)
  • Ubuntu Mono
  • Liberation Mono
  1. Salvestage seaded ja taaskäivitage terminal.

Tekstiredaktori märgikoodi seaded

1. Vimi märgikoodi seaded

Praeguste seadete kontrollimiseks avage Vim ja käivitage järgmised käsud:

:set encoding?
:set fileencoding?

Väljundi näide:

encoding=utf-8
fileencoding=utf-8

Kui see on midagi muud kui utf-8, lisage Vimi seadistusfaili (~/.vimrc) järgmine, et muuta vaikeväärtus UTF-8-ks.

set encoding=utf-8
set fileencodings=utf-8,latin1,iso-8859-15
set fileformats=unix,dos,mac

2. Nano märgikoodi seaded

Vaikesätete muutmiseks lisage seadistusfaili (~/.nanorc) järgmine:

set encoding "utf-8"

3. VSCode (Visual Studio Code) märgikoodi seaded

  1. Klõpsake redaktori akna paremas alanurgas asuvat “Kodeering” nuppu.
  2. Valige “Muuda kodeeringut” alt UTF-8.
  3. Vajadusel käivitage “Salvesta koos kodeeringuga”.

Lisaks, et määrata vaikesäteteks UTF-8, lisage seadistusfaili (settings.json) järgmine:

"files.encoding": "utf8"

7. Juhtumipõhised lahendused

Märkide moonutuse lahendused GUI rakendustes

1. Firefoxi või Chrome’i eestikeelne kuva on moonutatud

Lahendus:

  1. Installige vajalikud fondid.
sudo apt install -y fonts-noto-cjk fonts-ubuntu
  1. Kontrollige brauseri fondiseadeid.
  • Firefox:
    1. Minge aadressile about:preferences ja avage “Fondid ja värvid” → “Täpsemad”.
    2. Muutke “Proportsionaalne” ja “Püsiva laiusega font” väärtuseks Noto Sans CJK JP või Ubuntu.
  • Chrome:
    1. Minge aadressile chrome://settings/fonts.
    2. Muutke “Standardfont” ja “Püsiva laiusega font” väärtuseks Noto Sans CJK JP või Ubuntu.

2. LibreOffice’i eestikeelse teksti moonutamine

Lahendus:

  1. Installige fonts-noto-cjk või fonts-ubuntu.
  2. Muutke LibreOffice’i seadeid.
  • “Tööriistad” → “Valikud” → “LibreOffice” → “Fondid”
  • Muutke “Standardfont” väärtuseks Noto Sans CJK JP või Ubuntu.

Märkide moonutuse lahendused CUI keskkonnas

1. SSH-ühenduse märkide moonutamine

Lahendus:

  1. Kontrollige serveri poolel locale ja veenduge, et see oleks et_EE.UTF-8.
locale
  1. Kui see ei ole et_EE.UTF-8, käivitage järgmised käsud:
sudo apt install -y language-pack-et
sudo locale-gen et_EE.UTF-8
sudo update-locale LANG=et_EE.UTF-8

Märkide moonutuse lahendused konkreetsetes rakendustes

1. WSL (Windows Subsystem for Linux) märkide moonutamine

Lahendus:

  1. Määrake WSL-i lokaadiks et_EE.UTF-8.
echo 'export LANG=et_EE.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=et_EE.UTF-8' >> ~/.bashrc
source ~/.bashrc
  1. Muutke Windowsi terminali fondiks Noto Sans Mono CJK JP või sarnane Unicode’i toetav font.

2. Docker konteineri märkide moonutamine

Lahendus:

  1. Sisenege Docker konteinerisse ja kontrollige lokaati.
docker exec -it container_name bash
locale
  1. Lisage eestikeelne lokaat.
apt update && apt install -y locales
locale-gen et_EE.UTF-8
export LANG=et_EE.UTF-8
export LC_ALL=et_EE.UTF-8

8. KKK (Korduma Kippuvad Küsimused)

K1. Lokaat on seadistatud, kuid märkide moonutus ei kao.

V: Kui lokaadi õige seadistamine ei lahenda märkide moonutust, kontrollige järgmist:

locale

Kui see ei ole LANG=et_EE.UTF-8, on vaja uuesti seadistada.

sudo update-locale LANG=et_EE.UTF-8
sudo locale-gen et_EE.UTF-8
sudo dpkg-reconfigure locales

K2. Ainult teatud failid on moonutatud.

V: Failide märgikoodid võivad erineda. Kontrollige märgikoodi järgmiste meetoditega:

file -i sample.txt

Kui see ei ole UTF-8, on vaja teisendada.

iconv -f SHIFT_JIS -t UTF-8 sample.txt -o sample_utf8.txt

Või kasutades nkf:

nkf -w --overwrite sample.txt

K3. Terminalis ei saa eesti keelt sisestada.

V: Kontrollige, kas eestikeelne sisestusmeetod (nt Fcitx või IBus) on installitud.

sudo apt update
sudo apt install -y fcitx-mozc # or fcitx-libthai for basic Latin/Estonian input method
im-config -n fcitx

K4. WSL (Windows Subsystem for Linux) eestikeelne tekst on moonutatud.

V: Määrake WSL-i lokaadiks et_EE.UTF-8.

echo 'export LANG=et_EE.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=et_EE.UTF-8' >> ~/.bashrc
source ~/.bashrc

K5. Docker konteineris on eestikeelne tekst moonutatud.

V: Kui Docker konteineri lokaat on C.UTF-8, ei kuvata eesti keelt õigesti.

apt update && apt install -y locales
locale-gen et_EE.UTF-8
export LANG=et_EE.UTF-8
export LC_ALL=et_EE.UTF-8

K6. Ubuntu GUI rakenduste menüüd ja dialoogid on moonutatud.

V: Installige fonts-noto-cjk (või muu laia märgistikuga font) ja muutke fondiseadeid.

sudo apt install -y fonts-noto-cjk fonts-ubuntu

9. Kokkuvõte

Käesolevas artiklis selgitati üksikasjalikult Ubuntu’s tekkivate märkide moonutamise probleemi põhjuseid ja lahendusi. Märkide moonutused tekivad lokaadi seadistuse puuduste, fondi installimata jätmise, märgikoodide mittevastavuse jms tõttu, kuid neid saab vältida õigete seadistuste abil.

1. Märkide moonutamise peamised põhjused

  • Lokaadi seadistuse vead: Kui Ubuntu vaikekeeleks on C või POSIX, ei kuvata eesti keelt õigesti.
  • Fondi seadistamata jätmine: Kui eestikeelne font pole installitud, tekib GUI-s või terminalis märkide moonutus.
  • Märgikoodi mittevastavus: Erinevate märgikoodidega (nt Shift_JIS) failide avamisel tekib märkide moonutus.
  • Terminali või redaktori seadistusvead: Kui see pole seadistatud UTF-8-le, ei kuvata seda õigesti.

2. Märkide moonutuse lahendamise meetodid

PunktLahendus
Lokaadi seadistusKontrolli käsuga locale ja käivita update-locale LANG=et_EE.UTF-8.
Fontide installiminesudo apt install -y fonts-noto-cjk fonts-ubuntu
Märgikoodi kontrollimineKontrolli faili märgikoodi käsuga file -i või nkf --guess.
Märgikoodi teisendamineiconv -f SHIFT_JIS -t UTF-8 failinimi -o teisendatud_failinimi
Terminali seadistusMäärake LESSCHARSET=utf-8 ja muutke fondiks Noto Sans Mono CJK JP või sarnane.
GUI märkide moonutusMäärake fondiks Noto Sans CJK JP (või Ubuntu font) ja vajadusel kasutage gnome-tweaks.
WSL märkide moonutusMäärake LANG=et_EE.UTF-8 ja muutke fonti.
Docker märkide moonutusKäivitage locale-gen et_EE.UTF-8 ja seadistage lokaat Dockerfile’is.

3. Lisameetmed

  • Värskendage süsteemi regulaarselt: Vananenud Ubuntu paketid võivad mõjutada eestikeelset keskkonda.
sudo apt update && sudo apt upgrade -y
  • Seadistuste püsimine: Muudatuste lisamine faili ~/.bashrc või ~/.profile tagab, et need rakenduvad sisselogimisel.
  • Varukoopiate tegemine: Tehke varukoopiaid seadistusfailidest, nagu /etc/default/locale, enne nende muutmist.

Lõplik järeldus

Ubuntu’s esinevad märkide moonutuse probleemid saab lahendada, seadistades õigesti neli elementi: lokaat, fondid, märgikoodid ja terminali seaded. Selles artiklis esitatud meetodite rakendamine peaks aitama vältida märkide moonutusi enamikus keskkondades.

侍エンジニア塾