コンテキスト:Windows 10、cmd.exe、javac 9.0.1。javacはコマンドラインでユニコードを出力しません。
私はユニコードコードのソースコードを持っています。 javac -encoding UTF-8 ...
を実行してエラーが発生した場合、ソースを正しく表示することができません。
あなたが写真で見ることができるように、CLIはうまくユニコード文字を印刷することができます。
コンテキスト:Windows 10、cmd.exe、javac 9.0.1。javacはコマンドラインでユニコードを出力しません。
私はユニコードコードのソースコードを持っています。 javac -encoding UTF-8 ...
を実行してエラーが発生した場合、ソースを正しく表示することができません。
あなたが写真で見ることができるように、CLIはうまくユニコード文字を印刷することができます。
javacが端末の文字エンコーディングを使用していないようです。
あなたはフラグを使用してJVMの文字エンコーディングを指定することができます。
java -Dfile.encoding=UTF-8 ...
(または任意のエンコーディング)
javacは、Javaプログラムの周りだけ薄いラッパーです。 -J
フラグを使用して、そのJVMに引数を直接渡すことができます。 So:
javac -J-Dfile.encoding=UTF-8 ...
あなたは
System.getProperty("file.encoding")
を実行して、現在の(デフォルト)のエンコーディングを知ることができますし、このプロパティをデフォルトのエンコードを変更することができます。それは通常、Windowsの場合
- IBM KBからcp1252
、
ロングストーリー、キューは:
内部的には、Java仮想マシン(JVM)は常にUnicodeでデータ で動作します。ただし、JVMの内部または外部に転送されるすべてのデータは、 という形式でfile.encodingプロパティと一致します。 JVM に読み込まれたデータはfile.encodingからUnicodeに変換され、 JVMから送信されたデータはUnicodeからfile.encodingに変換されます。
'javac'は私のプログラムではありません。 'cp'は正しいと思われます。この図でわかるように、私は実際にはUnicodeの文字を表示することができます。 –
'javac -J-Dfile.encoding = UTF-8 ...'を試してみてください。 –
@AndyTurnerこれは実際に動作します! –
私は投票の理由は何ですか?これは私にとっては妥当な質問です。 – eis
不足している ';'を修正するとどうなるでしょうか?コンパイルされたコードは期待どおりに動作しますか? –
これは面白いコミュニティのようです;-) –