Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03113.jsonl.gz/1141

|Unicode (UTF-8) unter Slackware|
|Written by Administrator|
|Thursday, 07 February 2008 22:10|

Dieser Artikel behandelt wie Unicode (UTF-8) unter Slackware eingerichtet wird - aber auch welche Stolpersteine dabei zu bewältigen sind.
Einleitung
Zuerst einmal, UTF-8 ist ein elektronisches Kodierungsverfahren. Bei der elektronischen Kodierung wird jedem Zeichen ein
Bitmuster zugeordnet. Eine der frühsten Formen der Kodierung war der Morsecode. Mit dem Aufkommen der Computer wurde 1967 ASCII (auch ANSI X3.4-1968) als Standard veröffentlicht. Bei ASCII wird jedem Zeichen ein Bitmuster aus 7 Bit zugeordnet. Bei sieben Bits und zwei unterschiedlichen Zuständen je Bit (0, 1) ergeben sich 128 verschiedene Bitmuster, die auch als die ganzen Zahlen 0–127 (hexadezimal 00–7F) interpretiert werden können.
ASCII kodiert lediglich 128 Zeichen, davon 33 nicht-druckbare sowie folgende 95 druckbare. Enthalten sind das lateinische Alphabet in Gross- und Kleinschreibung, die zehn arabischen Ziffern sowie einige Satz- und Steuerzeichen wie folgt:
Zweck von ASCII
ASCII diente ursprünglich dazu, Schriftzeichen der englischen Sprache darzustellen. Jetzt gibt es aber bekanntermassen nicht nur die englische, sondern viele andere Sprachen, die auch noch unterschiedliche Zeichen zur Darstellung verwenden. Sonderzeichen wie z.B. die deutschen Umlaute können mit ASCII nicht dargestellt werden, hierfür würden 8 bis 16 Bit benötigt.
Ein erster Versuch (ISO 646) das Problem anzugehen führte zu Kompatibilitätsproblemen. Verschiedene Hersteller entwickelten daraufhin ihre eigenen Codes. Der unter IBM PC’s unter DOS verbreitete hiess Codepage 437. Beim späteren Standard ISO 8859 und seinen Varianten wurden 8 Bits zur Codierung verwendet. Der in westeuropäischen Sprachen zur Anwendung kommende Code heisst 8859-1 (latin 1) oder 8850-15 (latin 9), der auch das Euro-Symbol darstellen kann. All diese ISO 8859-Zeichensätze haben den grossen Nachteil, dass sie pro Zeichen nur 1 Byte verwenden und so pro Zeichensatz nur 256 Zeichen darstellen können.
Unicode
Um die Zeichen der unterschiedlichen Sprachen darstellen zu können, wurde der Unicode entwickelt. Er verwendet bis zu 32 Bit pro Zeichen. Damit können über vier Milliarden verschiedene Zeichen unterschieden werden, genug, um bislang alle von der Menschheit verwendeten Schriftzeichen darstellen zu können (sofern sie denn in den Unicode-Standard aufgenommen wurden).
UTF-8 ist eine 8-Bit-Kodierung von Unicode, die abwärtskompatibel zu ASCII ist. Ein Zeichen kann dabei ein bis vier 8-Bit-Wörter einnehmen. Mit der Hilfe von UTF-7 kann nach wie vor auch in sieben Bit kodiert werden. UTF-8 hat sich zum einheitlichen Standard unter den meisten Betriebssystemen, darunter auch Linux, entwickelt.
Warum UTF-8 verwenden?
Die Gründe hierfür sind im Prinzip einfach:
Problemstellen bei der UTF-8 Umstellung
Probleme können beim Nebeneinanderbestehen alter und neuer Systeme entstehen. Nachstehend die Wichtigsten, es sind aber auch noch andere Varianten denkbar.
Betroffen von der Kodierung sind die folgenden Stellen, wobei die ersten beiden als die Schwerwiegendsten zu betrachten sind:
** Mit dem Kommando „file dateiname” kann die Kodierung einer bestehenden Datei ermittelt werden.
Ob Textdateien richtig verarbeitet werden, hängt davon ab, ob:
Viele prominente Programme waren vor nicht allzu langer Zeit noch nicht zu 100 Prozent Unicode kompatibel, darunter:
Konvertierung von Dokumenten und Dateinamen
Im Schluss bedeutet die Umstellung auf UTF-8, dass früher oder später Dateinamen und Textdateien auf Unicode umgestellt werden müssen. Dafür gibt es allerdings Programme, die den mühsamen Vorgang unterstützen.
ISO 8859-1 – UTF-8:
Eine Konvertierung kann z.B. auch manuell mittels eines Unicode-fähigen Programms wie KWrite erfolgen.
Mit „convmv“ können nicht konforme Datei- und Verzeichnisnamen in UTF-8 umgewandelt werden. In diesem Fall werden das Verzeichnis und die darin befindlichen Dateien rekursiv (-r) konvertiert.
convmv --notest -r -f ISO8859-1 -t UTF-8 <Verzeichnisname
Zusätzlich
UTF-8 „locales” müssen existieren, diese werden aber inzwischen beim kompilieren der „glibc” automatisch erzeugt. Eine Locale ist ein Einstellungssatz, der die Gebietsschemaparameter für Computerprogramme enthält.
Locales
Der Befehl „locale” zeigt die aktuell eingestellten locales an. Der Befehl „locale –a” zeigt alle zur Verfügung stehenden locales an.
Rechner mit Unicode UTF-8:
LANG=de_CH.utf8
Rechner ohne Unicode:
LANG=de_CH
Unicode in Slackware aktivieren
Schritt 1:
Zuerst einmal die Locale (Gebietsschemaparameter) setzen. Dazu die Datei „/etc/profile.d/lang.sh“ editieren und anpassen, z.B.
export LANG=de_CH
Eventuell ist es notwendig, einzelne / alle der obigen LC-Variablen ebenfalls mit UTF-8 zu belegen. Mit LC_ALL kann dies einfach für alle Variablen erfolgen.
Falls in Deutschland (de_DE) oder Österreich de_AT entsprechend anpassen
Jetzt einen Unicode-fähigen Konsolenfont auswählen. Dazu muss allenfalls die Datei „/etc/rc.d/rc.font“ editiert und angepasst werden. Ich verwende den Font „lat9w-14.psfu“. Die verfügbaren Konsolenfonts sind im Verzeichnis „/usr/share/kbd/consolefonts“ zu finden. Der Konsolenfont kann auch via
/usr/bin/setconsolefont
Als Workaround, aber nicht zu empfehlen: CONSOLETRANSLATION=“8859-1_to_uni“ in der Datei rc.font aktivieren.
In „/etc/rc.d/rc.local“ folgendes eintragen:
unicode_start
Anpassung für “man” unter Unicode – dafür einen alias in „/etc/profile“ oder ~/.profile anlegen:
alias man='LC_ALL=C man'
In der Datei „~./bashrc“ folgendes eintragen:
if [ $TERM = "linux" ]; then
Schritt 6:
Der X11-Server ist UNICODE-kompatibel – nur die Tastatur muss korrekt konfiguriert werden:
PC-Tastaturen mit Windows- und Kontextmenütaste (105-Tasten) benötigen die Zeile:
PC-Tastaturen ohne Windows-Tasten, zum Beispiel IBM-Laptoptastaturen, benötigen die Zeile:
Die Zeile mit "XkbLayout" definiert das Tastaturlayout. Also:
Schritt 7:
Überprüfen und falls notwendig anpassen der Kodierungseinstellungen der verschiedenen Programme unter KDE / GNOME.
Schritt 8:
Im Kernel müssen einige Einstellungen für UTF-8 evtl. angepasst werden. Im Kernel (2.6.x) unter >> Filesystems
>> CONFIG_NLS_UTF8
Optional:
CONFIG_SMB_NLS_DEFAULT
CONFIG_FAT_DEFAULT_CODEPAGE
Zusatz: Kodierung in Terminalemulatoren
Werden Programme in einem Terminalemulator ausgeführt, tritt der Terminalemulator quasi als Vermittler auf. Der Terminalemulator muss ermitteln, in welcher Kodierung Eingaben dem Programm übergeben werden müssen und in welcher Kodierung die Ausgaben erfolgen resp. zu erfolgen haben. Es können Probleme auftreten, wenn:
Bei der Problembehandlung muss beachtet werden, dass Kommandozeilenprogramme die Ein- und Ausgabekodierung oftmals über die LANG-Variable steuern. Es ergibt sich also ein Zusammenspiel bei der Verarbeitung der Daten im Terminalemulator und im Kommandozeilenprogramm.
UTF-8 fähige Texteditoren
Eine Auswahl an Texteditoren, die UTF-8 verstehen sind:
Problemlösungsansätze
Daten die verarbeitet werden sollen liegen nicht im Unicode-Format vor, werden aber vom Terminalemulator als Unicode identifiziert:
LANG=de_CH konsole &
Dateinamen in einem Verzeichnis ansehen, die Zeichen in ISO 8859-Kodierung enthalten:
LANG=de_CH luit ls
Inhalte von Textdateien ansehen, die ISO8859-Zeichen enthalten:
LANG=de_CH luit cat „dateiname“
Remotezugriff auf einen Rechner mit ISO 8859 Kodierung:
In einem Terminalfenster das auf Unicode eingestellt folgendes eingeben:
Begriffserklärungen
ASCII
Zu den ASCII-Zeichen gehören die lateinischen Buchstaben, Ziffern und eine Vielzahl von Sonderzeichen (keine Umlaute). Bei ASCII wird jedem Zeichen ein Bitmuster aus 7 Bit zugeordnet. Bei sieben Bits und zwei unterschiedlichen Zuständen je Bit (0, 1) ergeben sich 128 verschiedene Bitmuster, die auch als die ganzen Zahlen 0–127 (hexadezimal 00–7F) interpretiert werden können.
ISO8859
Die vor Unicode gebräuchliche Codierungsart für Textzeichen. Es handelt sich um einen ein Byte Code, weshalb auch nur im Zahlenbereich von 0 bis 255 codiert werden kann. In der Praxis stehen allerdings weniger als die 256 Möglichkeiten zur Verfügung, da einige der Kombinationen für Steuerungszeichen verloren gehen. Da dies nicht ausreicht, wurden Zahlenwerten grösser als 127 mehrere Bedeutungen zugewiesen und jeweils regional bedingt in einem Standard ISO 8859-x festgelegt. Die richtige Interpretation erfolgte dann durch die Sprachauswahl in der LANG-Variable.
UTF-8
|Last Updated on Monday, 11 June 2012 09:43|