出力のエンコーディングは、ソース ファイルのエンコーディングによって制御されているようです。コンパイル時に指定しない限り ( Java ソース ファイルのエンコーディングを指定するにはどうすればよいですか? )、デフォルトのエンコーディングは OS から継承されます。
あなたが使用した Windows マシンには、予期した出力を引き起こすデフォルトのエンコーディングがありましたが、Linux マシンにはありませんでした。報告された同様の問題については、この質問を参照してください - Charset of Java source file and failing test。
挙動を再現できました。ソースファイルのエンコーディングを変更するという修正も見つかりました。詳細については、以下をお読みください。
次のコードを 2 つの異なるエンコーディングで実行しました。
System.out.println(Charset.defaultCharset().toString());
byte[] data = new byte[] {9, 22, 9, 65, 9, 54, 9, 22, 9, 44, 9, 48, 9, 64};
System.out.println(Arrays.toString(data));
System.out.println(new String(data, "UTF-16"));
OSのデフォルトエンコーディングを使用
私の場合、Mac の「MacRoman」でした。出力は次のとおりです。
MacRoman
[9, 22, 9, 65, 9, 54, 9, 22, 9, 44, 9, 48, 9, 64]
???????
UTF-8 エンコーディングの使用
ソース ファイルのエンコーディングを変更しました (ソース ファイルの「プロパティ」を参照してください)。再び走った。出力は次のとおりです。
UTF-8
[9, 22, 9, 65, 9, 54, 9, 22, 9, 44, 9, 48, 9, 64]
खुशखबरी