Anmelden

Allgemeine Informationen zu Zeichensätze.

Umlaute in Kommandozeilenparametern

Für Software ausschließlich im deutschen Sektor versuchen wir Umlaute möglichst breit zu unterstützen. Dies heißt, dass auch bei Aufruf von Tools oder Jobs Kommandozeilenparameter mit Umlauten vorkommen dürfen (Enums oder Dateinamen mit Umlauten). Diese werden dann unterstützt wenn folgende Umgebungsvariablen gesetzt sind (eingetreten bei engl. Ubuntu 8.04):

export MONO_EXTERNAL_ENCODING="utf8:latin1"
export MONO_EXTERNAL_ENCODINGS="utf8:latin1"

http://www.mono-project.com/FAQ:_Technical

CodePage 1252 not supported

mono Nsoft.ReportManager.CLI.exe /ConnectionString:DSN=HSM noten1.rep /Output:noten1.pdf /Param:4429

Input:noten1.rep
Output:noten1.pdf
ConnectionString:DSN=HSM
Params:1
System.NotSupportedException: CodePage 1252 not supported
at System.Text.Encoding.GetEncoding (Int32 codepage) [0x00000]
at Reportman.Drawing.PDFCanvas.UnicodeToWin1252 (System.String source) [0x00000]
at Reportman.Drawing.PDFCanvas.TextRect (Rectangle arect, System.String Text, Int32 Alignment, Boolean Clipping, Boolean wordbreak, Int32 Rotation, Boolean RightToLeft) [0x00000]
at Reportman.Drawing.PrintOutPDF.DrawObject (Reportman.Drawing.MetaPage page, Reportman.Drawing.MetaObject obj) [0x00000]
at Reportman.Drawing.PrintOutPDF.DrawPage (Reportman.Drawing.MetaFile meta, Reportman.Drawing.MetaPage page) [0x00000]
at Reportman.Drawing.PrintOutPDF.Print (Reportman.Drawing.MetaFile meta) [0x00000]
at Nsoft.ReportManager.CLI.Program.Main (System.String[] args) [0x00000] 

Lösung:

libmono-i18n2.0-cil installieren

http://ubuntuforums.org/showthread.php?t=831409

Fehlende Umlaute über System.Data.OdbcConnection

Beim Lesen von UTF8-Zeichen über System.Data.OdbcConnection sind Umlaute verschwunden (auf einem Ubuntu 8.04 System). Anstelle von Umlauten wurden ? ausgegeben. Dieses Problem pflanzt sich auf die PDF-Reports (Report Manager über ODBC) fort, wo dann ?? ausgegeben wird. Vermutlich entsteht das Problem beim Übergang der UTF8-kodierten Daten von psqlODBC in die NET Unicode-Präsentation in System.Data.Odbc, wobei die UTF8-Kodierung nicht erkannt wird.

Dieses Problem tritt auf, wenn die Umgebungsvariable LANG fehlt. Die Umgebungsvariable LANG muss wie folgt eingestellt sein:

LANG=en_US.UTF-8

Weiterhin muss LC_CTYPE eingestellt sein (insbesondere UTF-8 muss enthalten sein, ohne dem werden UTF8-kodierte Umlaute in der NET-Umgebung falsch angezeigt, z.B. ü als ü)

LC_CTYPE=en_US.UTF-8

Sie müssen sicherstellen, dass die Umgebungsvariable wie oben gesetzt ist. Im Kontext von Apache2 muss die Einstellung der Umgebungsvariablen ebenso erfolgen, siehe dazu Einrichtung einer SMACC Website.

LC-Einstellungen

Die LC-Einstellungen haben großen Einfluß auf das Reporting. Sie beeinflussen bei Unix-ODBC-Reporting die Darstellung der Umlaute, Kommasetzung bei Kommazahlen und eventuelle Datumsvormate. Folgende Einstellungen (Ubuntu 14) führen zu eine falschen Ausgabe vom Kommazahlen über ODBC (Komma um 2 Stellen nach rechte verschoben, Zahlen 100-fach größer !!!):

$ locale
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE=de_DE.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
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=

Die Änderung aller LC-Variablen erfolgt durch Setzen der LANG-Variable. Dies muss in allen Umgebungen erfolgen, die Reports über ODBS ausgeben (Webserver, Kommandozeile, Scriptdateien). Insbesondere bei Report-Erzeugung auf Kommandozeile muss die Einstellung unbedingt kontrolliert werden!

LANG=en_US.UTF-8

Daneben gibt es auch LC-Einstellungen in der Postgres-Datenbank. Das Zusammenspiel ist schwer zu durchschauen. Einstellung der DB:

CREATE DATABASE campus21
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_US.UTF-8'
       LC_CTYPE = 'en_US.UTF-8'
       CONNECTION LIMIT = -1;
   
Top

Wir arbeiten mit Software von http://www.campus21.de.

Verantwortlich für angezeigte Daten ist der Webdomain-Eigentümer laut Impressum.

Suche