Locale-UTF8
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.
Ab DSM 4.3
Synology hat aber der Version DSM 4.3 locale ins System integriert. Man kann mit "locale -a" die vorinstallierten Untersützung anzeigen.
Man kann im .profile ensprechend die Einträge setzen:
LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8 export LANG LC_ALL
Vor DSM 4.3
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, Anforderungen und Voraussetzungen
Dieses Beschreibung richtet sich an Administratoren, die sich in der Shell auskennen. Ziel dieses Beitrages ist es, dass man den UTF-8 Support für die Shell installieren kann. Dazu muuß die für den Prozessor der DS und die Version des DSM passende Toolchain heruntergeladen werden.
Beispiel
* System: Synology NAS DS211+ * DSM: 4.0 (2198)
Dann ist die passende Toolchain-Datei gcc421_glibc25_88f6281-GPL.tgz (Marvell 88F628x Linux 2.6.32). Im weiteren gehen wir von diesem Beispiel aus, für andere Systeme heissen die Verzeichnisse arm-none-linux-gnueabi/arm-none-linux-gnueabi anders.
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
Installation
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* /usr/local/bin/
Lokalisierung kopieren
cp -r arm-none-linux-gnueabi/arm-none-linux-gnueabi/libc/usr/share/i18n/ /usr/share
UTF-8 Datei mit dem localedef Tool erzeugen
Englisch/USA
/usr/local/bin/localedef -c -f UTF-8 -i en_US en_US.UTF-8
Deutsch(Schweiz)
/usr/local/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:
/usr/local/bin/locale –a C en_US.utf8 de_CH.utf8 POSIX
Konfiguration
Ist nun der UTF-8 vorhanden, kann man in seiner Profil-Datei eintragen:
LANG=de_CH.UTF-8 LC_ALL=de_CH.UTF-8 export LANG LC_ALL
Bei Benutzung von Putty muss man 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 Programmen
* Bei WinSCP kann man mittlerweile UTF-8 mit den Protokollen FTP, SFTP, SCP und WebDav verwenden. Näheres unter: http://winscp.net/eng/docs/faq_utf8 * Putty muss man ebenso auf UTF-8 umstellen. * Interne Programme wie vi sind z.b. deaktiviertem --disable-nls compiliert, deshalb kann man nicht auf eine andere Sprache ändern.