2017-12-22 18 views
1

コンテキスト:Windows 10、cmd.exe、javac 9.0.1。javacはコマンドラインでユニコードを出力しません。

私はユニコードコードのソースコードを持っています。 javac -encoding UTF-8 ...を実行してエラーが発生した場合、ソースを正しく表示することができません。

enter image description here

あなたが写真で見ることができるように、CLIはうまくユニコード文字を印刷することができます。

+0

私は投票の理由は何ですか?これは私にとっては妥当な質問です。 – eis

+0

不足している ';'を修正するとどうなるでしょうか?コンパイルされたコードは期待どおりに動作しますか? –

+0

これは面白いコミュニティのようです;-) –

答えて

2

javacが端末の文字エンコーディングを使用していないようです。

あなたはフラグを使用してJVMの文字エンコーディングを指定することができます。

java -Dfile.encoding=UTF-8 ... 

(または任意のエンコーディング)

javacは、Javaプログラムの周りだけ薄いラッパーです。 -Jフラグを使用して、そのJVMに引数を直接渡すことができます。 So:

javac -J-Dfile.encoding=UTF-8 ... 
0

あなたは

System.getProperty("file.encoding") 

を実行して、現在の(デフォルト)のエンコーディングを知ることができますし、このプロパティをデフォルトのエンコードを変更することができます。それは通常、Windowsの場合

- IBM KBからcp1252

ロングストーリー、キューは:

内部的には、Java仮想マシン(JVM)は常にUnicodeでデータ で動作します。ただし、JVMの内部または外部に転送されるすべてのデータは、 という形式でfile.encodingプロパティと一致します。 JVM に読み込まれたデータはfile.encodingからUnicodeに変換され、 JVMから送信されたデータはUnicodeからfile.encodingに変換されます。

+0

'javac'は私のプログラムではありません。 'cp'は正しいと思われます。この図でわかるように、私は実際にはUnicodeの文字を表示することができます。 –

+1

'javac -J-Dfile.encoding = UTF-8 ...'を試してみてください。 –

+0

@AndyTurnerこれは実際に動作します! –

関連する問題