Till innehåll på sidan
Till KTH:s startsida

Teckenkodning på fjärranslutningar - konstiga accenter

När filer flyttas mellan olika operativsystem eller lagras i ett vanligt filsystem som AFS, kan det hända att tecken som ÅÄÖ visas felaktigt.

En teckenkodning avgör vilken binär sekvens som används för att representera varje bokstav eller annat tecken. Många olika sätt att koda text har använts genom åren. CSC: s Unix-system har traditionellt använt ”Latin-1” (ISO-8859-1), som innehåller bokstäverna som används på västeuropeiska språk. Andra operativsystem har använt andra kodningar, t.ex. "Mac Roman" på Mac OS, "CP-1252" på MS Windows eller "CP-437" på MS DOS. Alla dessa är tillägg av ASCII (i grunden amerikanska bokstäver, siffror och skiljetecken), vilket innebär att sådana tecken visas korrekt. Men betonade bokstäver skiljer sig åt. Särskilt de svenska bokstäverna ÅÄÖ visas inte korrekt.

Dessa dagar kan de flesta operativsystem använda någon form av UTF-8, men du kan behöva konfigurera applikationerna för att använda den. För att göra det väljer du en lokal som definierar formatering av många inställningar som är specifika för ett språk och en region, till exempel:

  • Nummerformatering (t.ex. med "1 234,5" eller "1 234,5")
  • Formatering av datum och tid
  • Strängsortering (dvs. sorteringsordning, så att "ångström" sorteras under A på engelska men Å på svenska)

Lokalen är skriven som «språk» _ «variant». «Kodning», t.ex. “En_US.UTF-8” (amerikansk engelska, UTF-8) eller “en_GB.ISO8859-1” (brittisk engelska, latin-1).

Wikipedia's förklaring av latin1 (extern länk)

Wikipedia's förklaring av språk (extern länk)

Konvertera en fil

För att konvertera innehållet i en fil kan du öppna den i en lokalmedveten redigerare och "spara som ..."
en annan kodning, eller använd ikonv-kommandoradsverktyget:

iconv -f iso8859-1 -t utf-8 < original.txt > new.txt

När du loggar in på distans (med SSH) kan du normalt konfigurera dina lokala inställningar som ska vidarebefordras. Tyvärr stöder inte alla SSH-servrar detta. För närvarande (från och med november 2010) tillåter inte CSC: s Solaris SSH-server vidarebefordran av miljövariabler, vilket behövs för att detta ska fungera. Relevanta språk (en_US.UTF-8, sv_SE.UTF-8) är tillgängliga på Solaris, och du kan ställa in dem manuellt, men de används inte som standard.

Problem: ÅÄÖ visas som ���

Din applikation använder latin1 tecken, men din terminal (eller redigerare) försöker visa dem som UTF-8. Konfigurera din applikation så att den använder UTF-8 (se nedan) eller ändra dina terminalinställningar för att använda ISO-8859-1.

Problem: ÅÄÖ visas som åäö

Din applikation använder UTF-8, men de visas som latin1. Konfigurera din applikation så att den använder ISO-8859-1 (se nedan) eller ändra terminalinställningarna för att använda UTF-8.

Problem: ÅÄÖ visas som ���

Din applikation skriver ut U + FFFD, Unicode-ersättningsteckenet (�, visas vanligtvis som ett frågetecken på inverterad bakgrund). Detta konverteras sedan som om det vore i latin1 till UTF-8 (ett U + FFFD-tecken i UTF-8 använder tre byte). Kontrollera inställningarna för alla applikationer - inklusive terminalfönstret - för att säkerställa att de alla är överens om vilken kodning som ska användas.

Välj språk (applikationsinställningar)

Om din applikation är lokal medveten (de flesta är, men inte vissa äldre CSC-applikationer), kan du välja språk genom att

export LC_ALL=en_US.UTF-8 ## bash

setenv LC_ALL en_US.UTF-8 ## tcsh

och kör sedan din applikation. För att bara konfigurera teckenkodningen, ändra miljövariabeln LC_CTYPE istället.

Du kan också välja vilken plats som ska användas när du loggar in lokalt, men det kan orsaka problem när du använder ett annat operativsystem. Vi rekommenderar att du använder standardinställningarna och konfigurerar om applikationerna istället.

Konfigurera terminalkodning

Ubuntu

Kodningen som används av Gnomes terminal kan ändras under Terminal och sedan Set Character Encoding, men om du inte tidigare har gjort det måste du lägga till "Western (ISO-8859-1)" -kodningen.

Ubuntu terminal

Mac OS X

Standardinställningarna för Terminal.app är att använda UTF-8. Detta kan ändras genom att gå till Terminal sen Preferences… och sedan Advanced.

Terminal.app preferences

Standard för X11.apps xterm är att använda latin1. Du kan ändra detta genom att redigera startsekvensen för X11, men det är lättare att bara använda Terminal.app.

X11.app's xterm
Terminal.app

MS Windows

PuTTYs inställningar kan ändras under Window och sedan Translation i konfigurationsdialogrutan.

PuTTY's settings

CSC:s Windows-datorer kör för närvarande SSH Secure Shell från Tectia (tidigare SSH Communications Security Corp). Det är inte UTF-8-medvetet och kommer som standard att använda latin1-kodning.