Thread Zeichencodierung 3F für ä (31 answers)
Opened by bianca at 2013-11-12 18:35

murphy
 2013-11-14 12:19
#172068 #172068
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich kann das hier auch nachvollziehen. Genauer beobachte ich folgendes Verhalten: Wenn LANG auf eine vom System unterstützte Locale gestellt ist, schreibt Mono anscheinend grundsätzlich die Ausgabe in UTF-8, ansonsten schreibt es die Ausgabe in US-ASCII und ersetzt alle Sonderzeichen durch Fragezeichen.

Beispiel:
Code: (dl )
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


Die Ausgabekodierung scheint allerdings auch nicht direkt mit der Standardkodierung verbunden zu sein, denn letztere passt sich mit feinerer Granularität der Locale an:
Code: (dl )
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
When C++ is your hammer, every problem looks like your thumb.

View full thread Zeichencodierung 3F für ä