Windows上で色付きのテキストをコンソールに印刷しようとしていますが、エスケープ文字\u001B
を使用する必要があります。JavaからWindowsコンソールにエスケープ文字を印刷する方法
私のIntelliJ IDEAのコードSystem.out.print("\u001B[92m Hello!"):
は緑色のテキスト "Hello!"を表示します。
私はCMDからアプリケーションを実行すると、残念なことにコンソールでは機能しません。 ASCIIとUTF-8エンコーディングを使用しようとしましたが、それは役に立ちません。前述し、以下のスニペット
try (OutputStreamWriter writer = new OutputStreamWriter(
System.out,
StandardCharsets.UTF_8))
{
writer.write("\u001B[92m Hello!");
}
版画例えば
この<question mark in rectangle>[92m Hello!
ような何か情報:最後たとえば私はCHCP 65001コマンドを使用してUTF-8へのコンソールコードページを変更し、 -Dfile.encoding=UTF-8
フラグを有効にしてJavaアプリケーションを実行すると、Javaとコンソールで同じエンコードが使用されます。結果は同じです。
.batスクリプトから色付きのテキストを印刷できるので面白いです。たとえば、タスクが<ESC>
キーボードコンボAltキー + + + で++メモ帳に入力することができるエスケープ文字であるecho <ESC>[92m Hello!
によって行うことができます。
さらに興味深いのは、Javaがエスケープ文字<ESC>
を外部ファイルに正しく出力していることです。私はこの問題の解決策(できればネイティブ)を知ってうれしいです。
を参照してくださいは、エスケープ構文の種類コンソールをサポートしていますか? – talex
Windows 10を使用していますか?私はそのようなエスケープシーケンスは古いWindows版の 'cmd'では動作しないと思います... – aschipfl
.batスクリプトからエスケープ文字を完全に認識し、手動入力からエスケープコマンド文字を認識します。だから、それはサポートしています! javaとCMDの間に何か奇妙なことが起こる。 –