29

I have a CSV file with special accents and save it in Notepad by selecting UTF-8 encoding. When I read the file using Java, it reads the BOM characters too.

So I want to save this file in UTF-8 format without appending a BOM initially in Notepad.

Otherwise, is there a built-in class in Java that eliminates the BOM characters that present at beginning, when reading the contents in a file?

4

7 に答える 7

37
  1. Notepad++を使用します。これは無料で、メモ帳よりもはるかに優れています。EncodingEncode in UTF-8 with BOM を使用して BOM なしでテキストを保存すると便利です:

    Notepad++ v6 以前: Notepad++ メニューバーのスクリーンショット -> エンコード -> Notepad++ v6.7.9.2 の BOM なしの UTF-8 でエンコード メニュー

    Notepad++ v7+:
    Notepad++ メニューバーのスクリーンショット -> エンコード -> Notepad++ v7+ の BOM なしの UTF-8 でエンコード

  2. Java でこの問題に遭遇したとき、これらの最初の 3 バイト (BOM) を解析するライブラリが見つかりませんでした。だから私のアドバイス:

    • を使用しPushbackInputStream(in, 3)ます。
    • 最初の 3 バイトを読み取る
    • BOM ( EF BB BF ) でない場合は、プッシュ バックします。
    • ストリームを UTF-8 として処理する
于 2011-12-08T14:40:03.257 に答える
9

代わりに Notepad++ を使用してください。それに関する私の個人的なブログ投稿を参照してください。Notepad++ 内から、[エンコード] メニューを選択し、[BOM なしの UTF-8 でエンコード] を選択します。

于 2011-12-08T14:38:21.090 に答える
0

答えは、まったくありません。メモ帳ではそれができません。

Java では、InputStream の最初のバイトをスキップするだけで完了します。

于 2011-12-08T14:37:08.347 に答える
0

Notepad2またはNotepad++を試してみてください。これらのメモ帳の代替品には、BOM を出力するかどうかを選択するオプションがあります。

Java ソリューションに関しては、私の知る限り、Java は標準の UTF-8 を理解していません。私はグーグルで調べて、JavaのUTF-8とUnicodeの書き込みが壊れていることを発見しました -解決策かもしれないこの修正を使用してください。

于 2011-12-08T14:39:06.567 に答える
0

ユーティリティBOMStripperInputStream.javaを使用して、入力から BOM が存在する場合はそれを取り除きます。

于 2011-12-08T14:42:23.737 に答える