このコード、
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
out.write("A".getBytes());
この、
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
out.write("A".getBytes(StandardCharsets.UTF_8));
BOMなしのUTF-8である(私の意見では)同じ結果を生成します。ただし、Notepad++ には encoding に関する情報が表示されません。ここに notepad++ が として表示されることを期待していますEncode in UTF-8 without BOM
が、「エンコード」メニューでエンコードが選択されていません。
ここで、このコードは BOM エンコーディングを使用して UTF-8 でファイルを書き込みます。
OutputStream out = new FileOutputStream(new File("C:/file/test.txt"));
byte[] bom = { (byte) 239, (byte) 187, (byte) 191 };
out.write(bom);
out.write("A".getBytes());
Notepad++ もエンコード タイプを として表示していEncode in UTF-8
ます。
質問: BOM なしの UTF-8 でファイルを書き込むと想定されている最初の 2 つのコードの何が問題になっていますか? 私のJavaコードは正しいことをしていますか? もしそうなら、notepad++ がエンコーディング タイプを検出しようとしていることに問題はありますか?
notepad ++は推測だけですか?