Leser: 19
2013-11-12T17:35:46 biancaWie, was? Wie erzeugt ein Windows-Programm auf Linux eine Datei? Wie soll das geschehen sein? .NET mit Mono?in einer auf Linux von einem Windows Programm über Mono erzeugten Datei
QuoteJa, wie machst du das dann in Linux und Windows?Auf Windows konvertiere ich die selbe Datei aus dem selben Programm von CP850 in ISO-8859-15 und alle Umlaute sind sauber.
2013-11-13T09:56:02 GwenDragon.NET mit Mono?
2013-11-13T09:56:02 GwenDragonJa, wie machst du das dann in Linux und Windows?
2013-11-13T11:37:28 GwenDragonKodiere mit iconv um.
2013-11-13T12:06:49 GwenDragonDas Fragezeichen kommt wohl, wenn nicht korrekt in deinem Programm ins Ziel-Encoding umkodiert werden kann.
2013-11-13T20:20:07 murphyJa, aber für manche nicht unkompliziert, denn Standardshell und SSH-Shell können da je nach root oder Nutzer differieren.(...)vielleicht hilft es also auch, die Localeeinstellungen auf dem Hostsystem anzupassen.
2013-11-13T20:20:07 murphyDas Encoding, welches Mono standardmäßig als System.Text.Encoding.Default verwendet hängt jedenfalls von der Einstellung der Umgebungsvariable LANG ab
2013-11-14T10:47:57 GwenDragonWas zeigt denn locale al Ausgabe, nachdem du dich eingeloggt hast?
Quoteusername@server:~$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
2013-11-13T20:20:07 murphyIch bewzeifle ja, dass die Shell damit irgendetwas zu tun hat, denn die sollte den Datenstrom gar nicht anfassen.
2013-11-13T20:20:07 murphyvielleicht hilft es also auch, die Localeeinstellungen auf dem Hostsystem anzupassen.
2013-11-14T08:53:26 GwenDragon
2013-11-14T08:46:09 GwenDragonIch kann mich erinnern gelesen zu haben, dass Mono UTF8 verwendet und .NET UTF16.
2013-11-14T09:10:30 GwenDragonHast du mal mit hd oder od dir die Datei angesehen, was da wirklich drin steht?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cat foo.fsx
printf "äöü\n"
$ LANG='en_US.UTF-8' fsharpi foo.fsx | hd
00000000 c3 a4 c3 b6 c3 bc 0a |.......|
00000007
$ LANG='en_DK.UTF-8' fsharpi foo.fsx | hd
00000000 c3 a4 c3 b6 c3 bc 0a |.......|
00000007
$ LANG='en_DK.ISO-8859-15' fsharpi foo.fsx | hd
00000000 c3 a4 c3 b6 c3 bc 0a |.......|
00000007
$ LANG='en_DK.GARBAGE' fsharpi foo.fsx | hd
00000000 3f 3f 3f 0a |???.|
00000004
1
2
3
4
5
6
7
8
$ cat enc.fsx
printf "System.Text.Encoding.Default: %O\n" System.Text.Encoding.Default
$ LANG='en_DK.UTF-8' fsharpi enc.fsx
System.Text.Encoding.Default: System.Text.UTF8Encoding
$ LANG='en_DK.ISO-8859-15' fsharpi enc.fsx
System.Text.Encoding.Default: I18N.West.ENCiso_8859_15
$ LANG='en_DK.GARBAGE' fsharpi enc.fsx
System.Text.Encoding.Default: System.Text.ASCIIEncoding