Zeichensatz- und Umlautebehandlung in tin
=========================================

Umlaute beim Lesen
------------------

Nachdem ein Posting vom Newsserver geladen wurde, prüft tin, ob im Header
ein Zeichensatz deklariert wurde. Falls nicht, wird der (gerade passende)
Wert aus der attributes-Datei für undeclared_charset angenommen, wenn es den
auch nicht gibt, nimmt tin US-ASCII an.

Anschließend wird das Posting in den lokalen Zeichensatz konvertiert. Dieser
Zeichensatz ist im Locale angegeben, den Du normalerweise mittels
Umgebungsvariablen setzt (LANG, LC_*). Sollte das Posting Zeichen enthalten,
die im Header angegebenen bzw. durch tin angenommenen Zeichensatz nicht
vorkommen (z. B. 8-Bit-Zeichen bei US-ASCII- oder fehlender Deklaration),
werden sie durch Fragezeichen ersetzt. Enthält das Posting Zeichen, die im
lokalen Zeichensatz nicht vorkommen (z. B. Euro-Zeichen in einer
ISO-8859-1-Umgebung), werden diese ebenfalls durch Fragezeichen ersetzt. Das
so konvertierte Posting wird dann angezeigt.


Umlaute beim Schreiben
----------------------

Solltest Du auf die Idee kommen, auf ein Posting antworten, wird das wie
oben beschrieben konvertierte Posting an den Editor übergeben. Der sollte
dann natürlich auch mit dem lokalen Zeichensatz umgehen können. Dort
bearbeitest Du dann Deine Antwort ganz normal und beendest den Editor
wieder, um zu tin zurückzugelangen.

Wenn Du die Antwort verschickst, schaut tin nach, in welchem Zeichensatz Du
das tun möchtest: Entweder hast Du das in der attributes-Datei für die
jeweilige Gruppe (oder mehrere davon) oder global in der tinrc-Datei in
mm_network_charset festgelegt. Letzteres geht auch über das Menü: der Punkt
heißt MM_NETWORK_CHARSET. Tin konvertiert dann das Posting oder die Mail vom
lokalen Zeichensatz in den angegebenen Zeichensatz um. Auch hier kann es
dann passieren, daß Du lokal Zeichen verwendet hast, die im Zielzeichensatz
nicht verfügbar sind. Wie schon beim Anzeigen werden dann solche Zeichen in
Fragezeichen umgewandelt. In diesem Fall gibt tin außerdem eine Warnung aus,
so daß Du vor dem Posten noch korrigierend eingreifen kannst.


Wenn die Fragezeichen nerven
----------------------------

Als erstes solltest Du sicherstellen, daß tin auch weiß, welchen lokalen
Zeichensatz Du zur Anzeige verwendest. Tin fragt dazu die "locales" ab. Gib
in der Kommandozeile einfach mal den Befehl `locale` ein, alternativ `echo
$LANG, $LC_CTYPE`. Herauskommen sollte etwas wie "de_DE.ISO-8859-1", also ein
Sprachencode (hier de) gefolgt von einem Unterstrich, einem Ländercode (hier
DE) gefolgt von einem Punkt und ein Zeichensatz (hier ISO-8859-1).

Ist das nicht der Fall, solltest Du entweder LANG oder LC_CTYPE auf einen
für Dich passenden Wert stellen. Diesen Wert kannst Du wie oben beschrieben
zusammensetzen. In der französischsprachigen Schweiz und in einem Terminal,
das UTF-8 darstellt, würdest Du in der bash und in der ksh zum Beispiel den
Befehl `LC_CTYPE=fr_CH.UTF-8; export LC_CTYPE` verwenden; in der (t)csh
lautet er `setenv LC_CTYPE fr_CH.UTF-8`.

Im nächsten Schritt solltest Du in der attributes-Datei (im
.tin-Verzeichnis) einen Zeichensatz einstellen, der angenommen wird, wenn im
Posting keiner angegeben ist. Zum Beispiel so:

scope=*
undeclared_charset=Windows-1252

Damit legst Du für alle Newsgruppen fest, daß als Zeichensatz Windows-1252
angenommen werden soll. Da die meisten Leute unter Windows arbeiten dürften
und für Nordamerika sowie Westeuropa unter Window dieser Zeichensatz
voreingestellt ist, und dieser Zeichensatz im wesentlichen kompatibel zum
weit verbreiteten ISO-8859-1-Satz ist, ist das eine recht gute Näherung. Für
spezielle Newsgruppen solltest Du das ggf. in einem weiteren Eintrag ändern.
So ist zum Beispiel u.a. in der Hierarchie pl.* der Zeichensatz ISO 8859-2
üblich:

scope=pl.*,cz.*,hin.*,sk.*,hr.*
undeclared_charset=ISO-8859-2

Insbesondere in Fernost dürften hier noch andere Einstellungen notwendig
sein, beispielsweise so:

scope=chinese.*,alt.chinese.text.big5,tw.*
undeclared_charset=Big5

scope=fj.*,jp.*,japan.*
undeclared_charset=ISO-2022-JP

Sollten auch diese Einstellungen zu keinem Erfolg führen, sind die Locales
des Systems entweder nicht vorhanden oder kaputt. Zumindest in ersterem Fall
wäre es angebracht, ein entsprechendes Paket zu installieren (oder
installieren zu lassen). Libiconv von Bruno Haible wäre da eine sinnvolle
Wahl.

Wenn auch das nicht möglich ist, bleibt als allerletzte Möglichkeit nur, tin
neu zu compilieren. Dazu vorher `make distclean` und configure zusätzlich zu
den normalen Optionen mit --disable-locale aufrufen. In diesem Fall geht tin
grundsätzlich davon aus, daß die Postings im lokalen Zeichensatz zu
interpretieren sind. Hinweis: Das kann schon mal dazu führen, daß das
Terminal nur noch "komische" Zeichen ausgibt oder die Zeichen nicht da
ausgegeben werden, wo sie hinsollen.
