0

私はJavaでこのコード行を持っています:

new BufferedWriter(new OutputStreamWriter(new FileOutputStream(name, append), "UTF-8"));

このライターはUTF-8ファイルを書き込みません。これは、notepad ++でファイルを開くと、エンコードがUTF-8としてのANSIであると表示されるためです。純粋なUTF-8である必要があります。

何か提案はありますか?

4

3 に答える 3

11

notepad ++(およびその他のツール)はエンコーディングを推測することしかできず、ファイル(または一部のメタデータ)のどこにも書き込まれません。

また、作成したテキストにASCII範囲外の文字が含まれていない場合(つまり、Unicodeコードポイントが127を超える文字がない場合)、ANSIエンコーディングのファイルとUTF-8エンコーディングのファイルを区別できません。

于 2011-07-22T08:52:33.133 に答える
6

Notepad ++は、ヒューリスティックアルゴリズムを使用してエンコーディングを検出します。つまり、検出されたエンコーディングは、実際のコードとは異なる場合があります(推測です)。

この場合、Notepad ++は正しいですが、エンコーディングのラベルが誤っています。純粋なUTF-8であり、BOMANSI as UTF-8 ありません。

于 2011-07-22T08:52:40.573 に答える
-1

ほとんどの場合、Notepad++ではファイルの先頭にBOMが必要です。最初にバイトEFBBBFをファイルに書き込み、次にエンコードされた文字を書き込みます。

于 2011-07-22T08:54:19.013 に答える