2016-05-29 2 views
0

In der Dokumentation Oracle:Beeinflusst die Codierung des Java-Programmcodes die Kompilierung?

Codierung -encoding

die Quelldatei Codierung Namen ein, wie EUC-JP und UTF-8. Wenn -encoding nicht angegeben ist, wird der Plattform-Standardkonverter verwendet.

Ich weiß, dass der Plattform-Standardkonverter unter Mac OS X Mac Roman ist. Aber wenn ich meine .java Datei in UTF-8 codiert und viele andere Codierung, kompiliert der Code erfolgreich. Ich habe auch versucht, javac zwingen, UTF-8 und EUC-JP-Codierung von einem Mac Roman codierten Programmcode zu lesen, und es auch erfolgreich kompiliert.

Warum passiert das? Ich erwarte, dass all das oben gescheitert ist.

+0

Wenn Sie nur "einfache" Zeichen verwenden, macht die Kodierung keinen großen Unterschied. – jonrsharpe

+0

@jonrsharpe Ich testete mit einem Hallo Welt Dokument, aber warum ist das? Verwendet eine andere Codierung nicht unterschiedliche Binärzeichenfolgen, um ein Zeichen darzustellen? – Kun

+1

Da die ASCII-Zeichen 32-127 (englische Buchstaben, arabische Ziffern, grundlegende Satzzeichen) überall gleich sind. http://www.joelonsoftware.com/articles/Unicode.html. Mischen Sie Dinge mit komplexeren Charakteren und es wird interessant werden. – jonrsharpe

Antwort

1

Compile und führen Sie diesen Code:

System.out.println("".length()); 

Wenn die Datei als UTF-8 und als solche interpretiert gespeichert wird, wird es 2 drucken, da der Smiley zwei char s muss gespeichert werden.

Wenn die Datei als MacRoman interpretiert wird, wird 4 gedruckt, da die UTF-8-Codierung vier Byte lang ist.

:

Wenn Sie versuchen, diese (Hinweis: Sie können diesen Code in einer Unit-Test verwenden, um die richtige Codierung zu gewährleisten.):

System.out.println(''); 

Kompilieren als MacRoman nicht funktioniert sogar.

Solange also der gesamte UTF-8-Inhalt in Zeichenfolgenliteralen und Kommentaren enthalten ist, scheint alles zu funktionieren.