Möhrenfeld

Da ich etwas Probleme hatte mutt und vim in einer UTF-8 Umgebung zum kooperieren zu bewegen, hier eine kurze Anleitung. Genutzt wird das Setup bei mir auf einem Ubuntu Feisty Fawn System.

1. Prüfen ob das Terminal UTF-8 spricht

sebastian@lain:~$ locale
LANG=en_GB.UTF-8
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
sebastian@lain:~$ 

Wichtig ist, dass UTF-8 als CTYPE gegeben ist. Auch Umlaute sollte man tippen und dann korrekt angezeigt bekommen.

sebastian@lain:~$ echo "äöüß"
äöüß
sebastian@lain:~$ 

2. mutt

Hier habe ich mich etwas in dem FAQ-Artikel zu Charsets in der mutt FAQ schlau gemacht. Normalerweise übernimmt mutt seine locale-Einstellungen aus dem Terminal. Wer auf Nummer sicher gehen will kann sie mit diesen Einstellungen in der .muttrc explizit setzen:

set charset="utf-8"
set locale=`echo "${LC_ALL:-${LC_TIME:-${LANG}}}"`

Trotz UTF-8 im Terminal wollen wir beim Verschicken den kleinsten Nenner bei den verwenden Charsets benutzen, also definieren wir das so:

set send_charset="us-ascii:iso-8859-15:utf-8"
set file_charset="us-ascii:iso-8859-15:utf-8"

mutt wird so versuchen den Text je nach vorhandenen Zeichen zu codieren, von us-ascii bis rauf zu UTF-8 falls die Zeichen nicht in ASCII oder ISO-8859-15 codiert werden können.

3. vim

Mit vim hatte ich am meisten Probleme. Manchmal hat vim Zeichen doppelt kodiert, nach einem Reply waren die Umlaute im gequoteten Text kaputt, und ganz allgemein hat vim sich nach Kräften geweigert, so zu funktionieren wie es sollte. Auch hier hat mir die Mutt FAQ etwas weitergeholfen. Zuerst habe ich eine Datei .vimrc.mutt angelegt. Diese deaktiviert die automatische Umwandlung von Dateien. Im Endeffekt nur 3 Zeilen:

source ~/.vimrc
set fileencodings=      " charset auto-sensing: disabled
set fileencoding=       " auto-sensed charset of current buffer

Damit vim diese Datei benutzt, muss die editor-Einstellung in der .muttrc geändert werden:

set editor="vim -u ~/.vimrc.mutt '+/^$'"

Das -u ~/.vimrc.mutt ist hier wichtig, denn das sorgt dafür, dass die .vimrc.mutt geladen wird bevor die zu editierende Datei geöffnet wird. Ein nachträgliches Ändern der Werte wenn die Datei schon in vim geöffnet ist bringt nämlich nichts.

Das sollte es eigentlich gewesen sein, schreibt euch selbst eine Mail mit Umlauten, diese sollten jetzt korrekt angezeigt werden. Noch ein Hinweis: Wenn vim beim editieren über ein ILLEGAL BYTE in line xyz meckert und die Datei nur read-only öffnet, dann kann es sein, dass in eurer Signatur falsch codierte Umlaute vorhanden sind. Ich habe mir eine extra UTF8 .signature mittels iconv erzeugt:

iconv -t utf-8 ~/.signature >~/.signature.utf8

Das ganze dann noch in die .muttrc einbinden:

set signature="~/.signature.utf8"

Das wars dann, eigentlich sollte jetzt alles mit UTF8 funktionieren.