Wikier

Tegnsett i terminal og editorer

Med et galt oppsett av tegnsett kan tegn bli mistolket av datasystemet. UTF-8 tegnsett løser det problemet.

English version Character sets in terminals and editors

Ser du etter noe annet? Temaside om IT-hjelp | Sider merket med tegnsett

Om tegnsett

Hvilket tegnsett som er satt på et system eller i et program, bestemmer hvordan tegn blir tolket av datasystemet. Det er derfor viktig at tekst leses med samme tegnsett som det skrevet. Det moderne Unicode (UTF) er en omfattende standard som vil forhindre de fleste problemer knyttet til tegnsett.

Locale er et begrep som både omhandler tegnsett og hvordan blant annet tall, valuta og datoer skal vises.

Tegnsett på terminalemulator

Først må du konfigurere terminalemulatoren din til å bruke UTF-8. Terminalemulatorer som uxterm og urxvt støtter bare UTF-8. I Gnome Terminal må du kanskje bruke menyen Terminal->Sett tegnkoding->UTF-8 dersom ikke systemet ditt har gjort det fra før. I PuTTY må du før du logger inn velge Translation under Category, og finne UTF-8 i listen over Character sets translation on received data.

Tegnsett på NTNUs login.stud og login.ansatt

Vi skal ta for oss tjeneren login.stud.ntnu.no som eksempel (tilsvarende gjelder for login.ansatt.ntnu.no). Denne har engelsk UTF-8 som standard valgt tegnsett, og det skal derfor være problemfritt i utgangspunktet.

Du kan sjekke hvilket locale som brukes i øyeblikket med kommandoen locale:

lynx:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=nb_NO.UTF-8
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Hvis du ønsker å skifte locale, kan det først være greit å se hvilke som er tilgjengelig:

lynx:~$ locale -a
C
en_DK
en_DK.utf8
en_GB
en_GB.iso885915
en_GB.utf8
en_US
en_US.iso885915
en_US.utf8
nb_NO
nb_NO.utf8
nn_NO
nn_NO.utf8
POSIX

Ønsker du å endre denne, kan du gjøre det slik

lynx:~$ export LANG=en_DK.UTF-8
lynx:~$ export LC_ALL=en_DK.UTF-8Du kan da se at det har endret seg ved å skrive locale

{{
lynx:~$ locale
LANG=en_DK.UTF-8
LC_CTYPE="en_DK.UTF-8"
LC_NUMERIC="en_DK.UTF-8"
LC_TIME="en_DK.UTF-8"
LC_COLLATE="en_DK.UTF-8"
LC_MONETARY="en_DK.UTF-8"
LC_MESSAGES="en_DK.UTF-8"
LC_PAPER="en_DK.UTF-8"
LC_NAME="en_DK.UTF-8"
LC_ADDRESS="en_DK.UTF-8"
LC_TELEPHONE="en_DK.UTF-8"
LC_MEASUREMENT="en_DK.UTF-8"
LC_IDENTIFICATION="en_DK.UTF-8"
LC_ALL=en_DK.UTF-8

export-kommandoene kan være greit å ha i .bashrc, slik at du slipper å skrive dem hver gang du logger på.

Legg merke til at vi bruker localet en_DK.UTF-8. Det er engelsk som de prater det i Danmark(!) - det gir engelsk språk, men nordisk tidsangivelse, nordisk valutategn, kart med nord som peker oppover og lignende ting som er spesifikt for landet eller regionen en er i. Dersom du vil ha programmene på norsk i stedet for engelsk, kan du bruke nb_NO.UTF-8 for bokmål eller nn_NO.UTF-8 for nynorsk.

Tegnsett i teksteditorer

UTF-8 i Vim

Vim har alt internt i UTF-8, og konverterer mellom tegnsett når den laster og skriver til filer. Du kan fortelle Vim at den alltid skal bruke UTF-8 (såfremt den ikke oppdager at filen er i et annet tegnsett) med følgende i filen .vimrc på hjemmeområdet ditt:

set fileencoding=utf-8
set encoding=utf-8
set termencoding=utf-8

UTF-8 i Emacs

Emacs på lynx har UTF-8-støtte. Dersom Emacs ikke har det på din egen maskin, må du sannsynligvis installere Mule (i Debian, Ubuntu og venner: sudo aptitude install mule-ucs). Når dette er gjort, kan du legge til følgende i din .emacs (eller .xemacs/custom.el):

(prefer-coding-system 'mule-utf-8)
(setq locale-coding-system 'mule-utf-8)
(set-terminal-coding-system 'mule-utf-8)
(set-keyboard-coding-system 'mule-utf-8)
(set-selection-coding-system 'mule-utf-8)

UTF-8 i irssi

IRC-klienten irssi har god tegnsett-støtte. Du kan fortelle irssi at terminalen din er i UTF-8 med følgende:

/set term_charset UTF-8

Dersom du har en passelig ny irssi (fra rundt versjon 0.8.10 og oppover) kan irssi ha forskjellige tegnsett på forskjellige kanaler. Du kan sette standard tegnsett:

/set recode_out_default_charset UTF-8

(eller latin1 i stedet for UTF-8, om du ønsker det). Så kan du sette tegnsett per kanal, dersom du står i vinduet til kanalen:

/recode add UTF-8

Se /help recode for videre bruk.

UTF-8 i Mutt

E-post-klienten Mutt har også UTF-8-støtte. I filen .muttrc i hjemmekatalogen din kan du inkludere følgende to linjer:

set charset=utf-8
set send_charset=utf-8

Dersom du bruker Vim til å skrive e-post fra Mutt, vil du også ha følgende linje i .vimrc:

au BufNewFile,BufRead mutt*    set tw=77 ai nocindent fileencoding=utf-8

Den setter tegnsett, bredde før linjer brytes og indentering korrekt for e-post-skriving.

UTF-8 i Pine

Pine støtter ikke UTF-8.

Dersom du virkelig vil ha UTF-8 og Pine, må du bruke et program som oversetter alle tegn for Pine på vei inn og ut, slik at Pine fortsatt tror den kjører i et ISO-8859-1-miljø:

bruker@lynx:~$ luit -encoding 'ISO-8859-1' pine

Denne løsningen fungerer sjeldent optimalt, og kan godt finne på å ikke virke. En bedre løsning er å bruke en e-post-klient som støtter UTF-8.

UTF-8 i screen

Mange bruker screen til å kjøre programmer i. screen tar vanligvis utgangspunkt i locale i miljøet ditt, men kan tvinges til å bruke UTF-8 med svitsjen -U når du kobler til en kjørende screen:

bruker@lynx:~$ screen -rU

Dersom screenen din ble startet i et C- eller ISO-8859-1-locale må du kanskje starte den på nytt for å få nye vinduer i den til å oppføre seg. 

Relaterte sider

Kontakt

Orakeltjenesten kan hjelpe deg hvis du støter på problemer. Ansatte bes om å kontakte lokal IT-ansvarlig.