Locale-UTF8
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