Re: Wie bringe ich dem xterm utf8 bei?
Andreas Pakulat <apaku@gmx.de> writes:
>On 08.Mai 2005 - 00:59:30, Helmut Waitzmann wrote:
>> Wenn ich ein xterm in einer utf8-locale-Umgebung starte, erhalte ich von
>> ihm die Fehlermeldung:
>>
>> $ (locale -a && locale && \
>> exec xterm -hold -geometry -0+0 -e \
>> sh -c 'locale && exec ${1+"$@"}' sh cat -- utf8.txt)
>> de_DE.utf8
>> de_DE.utf8@euro
>> en_GB.utf8
>> en_US.utf8
>> LANG=de_DE.utf8
>> LC_CTYPE=de_DE.utf8
>> LC_NUMERIC=C
>> LC_TIME=de_DE.utf8
>> LC_COLLATE=de_DE.utf8
>> LC_MONETARY=de_DE.utf8
>> LC_MESSAGES=C
>> LC_PAPER=de_DE.utf8
>> LC_NAME=de_DE.utf8
>> LC_ADDRESS=de_DE.utf8
>> LC_TELEPHONE=de_DE.utf8
>> LC_MEASUREMENT=de_DE.utf8
>> LC_IDENTIFICATION=de_DE.utf8
>> LC_ALL=
>> Warning: locale not supported by Xlib, locale set to C
>
>Diese Warnung sollte eigentlich Warnung genug sein.
Beachte: Hier warnt das Xlib im xterm. »locale« warnt nicht. Es
scheint also mit dem Locale zufrieden zu sein. Im Gegensatz dazu warnt
»locale« bei Locales, die es nicht kennt, durchaus:
Ein Beispiel für ein dem Programm »locale« unbekanntes Codeset:
$ LC_CTYPE=de_DE.ISO-8859-15 locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=C
LC_CTYPE=de_DE.ISO-8859-15
LC_NUMERIC=C
LC_TIME=de_DE
LC_COLLATE=de_DE
LC_MONETARY=de_DE
LC_MESSAGES=C
LC_PAPER=de_DE
LC_NAME=de_DE
LC_ADDRESS=de_DE
LC_TELEPHONE=de_DE
LC_MEASUREMENT=de_DE
LC_IDENTIFICATION=de_DE
LC_ALL=
Ein Beispiel für ein unbekanntes Language und Territory:
$ LC_CTYPE=fr_FR locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=C
LC_CTYPE=fr_FR
LC_NUMERIC=C
LC_TIME=de_DE
LC_COLLATE=de_DE
LC_MONETARY=de_DE
LC_MESSAGES=C
LC_PAPER=de_DE
LC_NAME=de_DE
LC_ADDRESS=de_DE
LC_TELEPHONE=de_DE
LC_MEASUREMENT=de_DE
LC_IDENTIFICATION=de_DE
LC_ALL=
Das sieht also nach einem Konfigurationsproblem mit dem Xlib aus.
>2 Dinge:
>
>1. dpkg-reconfigure locales
Das hatte ich zuvor schon gemacht. Aber für den Fall, dass es etwas
nützt:
# dpkg-reconfigure locales
Ich habe alle locales ausgewählt, deren Name mit de_DE, en_US oder en_GB
beginnt, das waren diese hier:
de_DE.UTF-8 UTF-8
de_DE.UTF-8@euro UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
en_GB.UTF-8 UTF-8
en_GB ISO-8859-1
en_GB.ISO-8859-15 ISO-8859-15
en_US.UTF-8 UTF-8
en_US ISO-8859-1
en_US.ISO-8859-15 ISO-8859-15
Das Locale fr_FR, das auch zur Wahl steht, habe ich nicht ausgewählt.
Jetzt ein xterm (wie im OP) gestartet: Der Fehler tritt noch immer auf.
An einem fehlenden »dpkg-reconfigure locales« liegt es also nicht.
>2. de_DE.UTF-8
>Die Kodierung wird gross geschrieben und nicht klein.
Du hast recht, s.u.
Wie kommt man an die Liste der installierten locales? Ich habe mich bei
»locale -a« umgesehen. Ist »locale -a« nicht genau dafür vorgesehen?
»locale -a« kennt noch immer keine ».UTF-8«-Locales (wie schon zuvor
auch):
$ locale -a
C
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
de_DE.utf8@euro
deutsch
en_GB
en_GB.iso88591
en_GB.iso885915
en_GB.utf8
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
german
POSIX
Das Manual-Page setlocale(3) sieht ebenfalls »locale -a« als Quelle
der Liste aller unterstützten locales an. Allerdings führt es als
Beispiel für ein codeset »UTF-8« an:
A locale name is typically of the form
language[_territory][.codeset][@modifier], where language is an
ISO 639 language code, territory is an ISO 3166 country code, and
codeset is a character set or encoding identifier like ISO-8859-1
or UTF-8. For a list of all supported locales, try "locale -a",
cf. locale(1).
Das Manual-Page locale(1) bekräftigt die Auskunft über installierte
Locales:
-a, --all-locales
Write names of available locales.
Es findet sich dort zwar auch noch:
FILES
/usr/share/i18n/SUPPORTED
List of supported values (and their associated
encoding) for the locale name. This representation is
recommended over --all-locales one, due being the
system wide supported values.
»/usr/share/i18n/SUPPORTED« ist aber nicht sehr vertrauenserweckend, da
darin alle installierbaren (z.B. auch »fr_FR«), nicht nur die tatsächlich
installierten locales enthalten sind, jedoch keine mit ».utf8«, nur mit
».UTF-8«.
Aber du hast dennoch recht:
$ xterm -hold -geometry -0+0 -e \
sh -c 'locale && exec ${1+"$@"}' sh cat -- utf8.txt
(wie im OP) zeigt jetzt keine Fehlermeldungen, aber das gewünschte Ergebnis:
LANG=de_DE.UTF-8
LC_CTYPE=de_DE.UTF-8
LC_NUMERIC=C
LC_TIME=de_DE.UTF-8
LC_COLLATE=de_DE.UTF-8
LC_MONETARY=de_DE.UTF-8
LC_MESSAGES=C
LC_PAPER=de_DE.UTF-8
LC_NAME=de_DE.UTF-8
LC_ADDRESS=de_DE.UTF-8
LC_TELEPHONE=de_DE.UTF-8
LC_MEASUREMENT=de_DE.UTF-8
LC_IDENTIFICATION=de_DE.UTF-8
LC_ALL=
ߤ€
Woher kommt die Diskrepanz zwischen der Liste der installierten Locales
und der Ausgabe von »locale -a«? Liegt da ein Fehler bei »locale« vor
oder fehlt der Konfiguration der Locales noch etwas?
>> *VT100.font2: -*-fixed-medium-r-normal-*-*-50-98-108-c-*-iso8859-*
>
>Ich bin nicht sicher, aber die VT100 Fonts sollten auf eine iso10646
>Kodierung zeigen nicht auf iso8859
Das scheint nicht notwendig zu sein: Es gibt es X-Resources der
Form (siehe OP)
*VT100.utf8Fonts.?
die bei Verwendung des Locales de_DE.UTF-8 (s.o.) beachtet werden.
--
Wenn Sie mir E-Mail schreiben, stellen | When writing me e-mail, please
Sie bitte vor meine E-Mail-Adresse | precede my e-mail address with
meinen Vor- und Nachnamen, etwa so: | my full name, like
Helmut Waitzmann <xxx@example.net>, (Helmut Waitzmann) xxx@example.net
Reply to: