Inhaltsverzeichnis

Wie kann ich die Kodierung meines Dokuments bestimmen? Oder: warum funktionieren meine Umlaute nicht?

Ein Dokument auf der Festplatte besteht aus einer langen Reihe von Zahlen, die erst beim Einlesen (von TeX) in Buchstaben interpretiert werden. So würde TeX die Zahlenfolge 72 97 108 108 111 als Wort »Hallo« lesen. Letztendlich ist das aber nur eine Übereinkunft, von der es aber leider viele unterschiedliche gibt.1) So ist nicht festgelegt, als welcher Buchstabe die Zahl 228 interpretiert wird. Es könnte ein »ä« sein, ein »‰« oder ein ungültiges Zeichen. Das kommt auf die Kodierung an, mit der das Dokument gespeichert wurde. Üblich ist heutzutage UTF-8, aber es gibt noch genügend »Altlasten«, die einem das Leben schwer machen. Üblich waren früher Latin1 (=ISO 8859-1) und Windows-1252 und vereinzelt auch Mac Roman, wobei die ersten beiden Kodierungen sich stark überschneiden, nur in den Bereichen 128-159 unterschiedlich sind. Mit Windows-1252 kann man beispielsweise das Eurozeichen (128) darstellen.

Wenn man in einem Texteditor das Dokument speichert, passiert das immer in einer bestimmten Kodierung. Manchmal kann (oder muss) man sie angeben, oftmals ist das aber sehr verdeckt oder nicht sichtbar. Wichtig ist jedoch im Dokument anzugeben, mit welcher Kodierung das Dokument gespeichert ist. Da man das aber nicht immer weiß, hilft das Paket selinput. Das funktioniert mit allen Engines (Knuth, PDFTeX, LuaTeX, XeTeX). Hier ein vollständiges Beispiel:

\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß}
}
 
\begin{document}
Schöne Grüße vom Mädchen aus Österreich.
\end{document}

Damit erkennt TeX vollautomatisch die korrekte Kodierung und man ist von allen Sorgen diesbezüglich befreit.

LuaTeX und XeTeX

Bei diesen beiden Engines wird als Eingabe immer UTF-8 angenommen, so dass keine Zeile wie oben notwendig ist, solange das Dokument mit UTF-8 gespeichert wurde.

TeXnicCenter

TeXnicCenter speichert bis zur Version 2 (Stand 2013) die Dateien im Format »Windows-1252« ab und kann nicht mit UTF-8 umgehen. Version 2 und höher speichert die Dateien im Format UTF-8 ab.

Alternativen

Anstelle des Pakets selinput kann man die Kodierung auch direkt angeben, sofern man sie kennt:

\usepackage[latin1]{inputenc}  % ISO-8859-1, Latin-1
\usepackage[utf8]{inputenc}    % UTF-8
\usepackage[ansinew]{inputenc} % Windows CP 1252

man muss sich dann halt die passende Zeile heraussuchen.

Tipp: Wenn man auf einen Unix/Linux System arbeitet, kann man manchmal mit dem Kommando file die Kodierung erfahren. Dazu gibt man den Dateinamen des Dokuments an.

$ file test.tex 
test.tex: LaTeX 2e document, UTF-8 Unicode text
1)
Die Zahlen bis 127 sind im ASCII Standard festgelegt, die von allen Kodierungen eingehalten wird.