Locale-UTF8

Aus
Version vom 22. März 2012, 11:55 Uhr von Stastka (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Shell: locale UTF-8 Support = == Was ist UTF-8? Ein kleine Exkursion: == UTF-8 ist eine Abkürzung für 8-Bit UCS Transformation Format , wobei UCS für „Un…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Shell: locale UTF-8 Support

Was ist UTF-8? Ein kleine Exkursion:

UTF-8 ist eine Abkürzung für 8-Bit UCS Transformation Format , wobei UCS für „Universal Character Set“ steht. Sie ist die am meisten verbreiteter Standard Kodierung von Unicode-Zeichen. Bei der UTF-8-Kodierung wird jedem Unicode-Zeichen eine speziell kodierte Bytekette variabler Länge zugeordnet. UTF-8 unterstützt bis zu vier Byte, auf die sich wie bei allen UTF-Formaten alle Unicode-Zeichen abbilden lassen.

UTF8 ist ein zentraler Bestandteil als Weltweites Zeichenkodierung im Internet. So unterstützen moderne Browser und Email-Client UTF8 Standardmässig. Neben dem Internet empfiehlt es sich auch lokal auf dem Computer/Server mit dieser Kodierung zu arbeiten.

Synology NAS und UTF-8 Unterstützung

Bei der Dateifreigaben Windows, Mac, Linux besteht bereit eine UTF-8 Unterstützung. Bei FTP muss man in der Systemsteuerung der DMS den UTF8-Support aktivieren. Bei der Shell sieht es anders aus. z.Z. gibt es bei der Standardinstallation keinen UTF-8 Support. Ein Ordner "öäü" sieht dann in der Shell folgendermassen aus:

öäü

Der Grund ist schnell gefunden, es besteht kein UTF-8 Support:

NAS>locale –a
C
POSIX 

Installation

Ziele und Anforderungen

Ziel dieses Beitrages ist es, dass man den UTF-8 Support für die Shell installieren kann.

Voraussetzungen

Dieses Beschreibung richtet sich an Administratoren die sich in der Shell auskennen.

System

* System: Synology NAS DS211+
* DSM: 4.0 (2198)
* Tool-Chain: gcc421_glibc25_88f6281-GPL.tgz (Marvell 88F628x Linux 2.6.32)

Sollte ein einderes Modell verwendet werden muss sichergestellen werden, dass die richtige CPU-Architektur verwendet wird.

Installation

ToolChain herunterladen

wget http://downloads.sourceforge.net/project/dsgpl/DSM%204.0%20Tool%20Chains/Marvell%2088F628x%20Linux%202.6.32/gcc421_glibc25_88f6281-GPL.tgz

Enpacken

tar -zvxf gcc421_glibc25_88f6281-GPL.tgz

locale Ordner erstellen:

mkdir /usr/lib/locale

Programme kopieren mit der die Daten generiert werden können

cp ./arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/bin/ locale /opt/bin/
cp ./arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/bin/ localedef /opt/bin/


Lokalisierung kopieren

cp ./arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/share/i18n/ /usr/share


UTF-8 Datei mit dem localedef Tool erzeugen

Englisch/USA

/opt/bin/localedef -c -f UTF-8 -i en_US en_US.UTF-8

Deutsch(Schweiz)

/opt/bin/localedef -c -f UTF-8 -i de_CH de_CH.UTF-8

Sollte der Befehl nach ca. 10-20 Sekunden beendet sein und keine Fehlermeldung erscheinen so kann man nun prüfen welche Kodierung verfügbar sind:

    /opt/bin/locale –a
    C
    en_US.utf8
    de_CH.utf8
    POSIX 

Ist nun der UTF-8 vorhanden kann man in seinem Profil-Datei diese eintragen:

LANG=de_CH.UTF-8
LC_ALL=de_CH.UTF-8
export LANG LC_ALL 

Die Shell (Putty) kann nun geschlossen werden. Als letzter Punkt muss man bei Putty die Verbindungsdaten ändern:

Window>Translation

Character set translation> "Remote character set:" UTF-8


Verbindet man sich jetzt per Shell kann man den UTF-8 Support testen:

    NAS>locale
    LANG=de_CH.UTF-8
    LC_CTYPE="de_CH.UTF-8"
    LC_NUMERIC="de_CH.UTF-8"
    LC_TIME="de_CH.UTF-8"
    LC_COLLATE="de_CH.UTF-8"
    LC_MONETARY="de_CH.UTF-8"
    LC_MESSAGES="de_CH.UTF-8"
    LC_PAPER="de_CH.UTF-8"
    LC_NAME="de_CH.UTF-8"
    LC_ADDRESS="de_CH.UTF-8"
    LC_TELEPHONE="de_CH.UTF-8"
    LC_MEASUREMENT="de_CH.UTF-8"
    LC_IDENTIFICATION="de_CH.UTF-8"
    LC_ALL=de_CH.UTF-8

Somit sieht der Ordner öäü neu folgendermassen aus:

öäü

Anmerkung zu WinSCP/SCP

Bei WinSCP kann man UTF-8 nur mit den Protokollen FTP oder SFTP verwenden. SCP kann von Haus aus nicht UTF-8. Näheres unter:

* http://winscp.net/eng/docs/faq_utf8