web-dev-qa-db-ja.com

BOMなしでUTF-8でテキストを保存するようにメモ帳を作成する方法は?

[〜#〜] csv [〜#〜] に特別なアクセントのあるファイルがあり、UTF-8エンコードを選択してメモ帳に保存しています。 Javaを使用してファイルを読み取ると、BOM文字も読み取られます。

したがって、最初にメモ帳でBOMを追加せずに、このファイルをUTF-8形式で保存したいと思います。

それ以外の場合、Javaに組み込みクラスがあり、ファイルの内容を読み取るときに最初に存在するBOM文字を削除しますか?

25
user1058036
  1. Notepad ++ -Freeを使用し、メモ帳よりもはるかに優れています。 Enconding>BOMなしのUTF-8エンコードを使用して、BOMなしでテキストを保存するのに役立ちます: Screenshot of the Notepad++ Menubar > Encoding > Encode in UTF-8 without BOM menu in Notepad++ v6.7.9.2

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

    • PushbackInputStream(in, 3)を使用します。
    • 最初の3バイトを読む
    • BOM(EF BB BF)でない場合は、それらを押し戻します
    • ストリームをUTF-8として処理します
32
korifey

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

9
ziesemer

@ martin-geislerが指摘しているように、 this Stack Overflow post から、selecting[〜#〜] ansi [〜#〜]エンコーディングとして。

結果のファイルはおそらく望みのエンコーディングではなく、実際にはANSIであるため、より高度な用途ではこれは機能しないと思います。しかし、メモ帳のみを使用して、BOMを使用せずに非常に小さな.phpスクリプトを保存するために、この動作をテストおよび確認しました。

WindowsのNotepadは真のエディターではないという長くて難しい方法を学びましたが、他の人にも指摘したいのですが、新しいWindowsマシン(少なくとも私のマシンの1つ)で「エディター」と入力すると、誤解を招くように呼び出されます。

現在、この問題を解決するために Emacs および他のエディターを使用しています。

8
olaf atchmi

Windows 10 1903以降のバージョンのメモ帳は、BOMなしでUTF-8に保存されます。実際、現在はUTF-8がデフォルトのファイル形式です。

Screenshot of Notepad

参照: https://www.bleepingcomputer.com/news/Microsoft/windows-10-notepad-is-getting-better-utf-8-encoding-support/

1
Marc Durdin

答えは「まったくありません」です。メモ帳ではできません。

Javaでは、InputStreamの最初のバイトをスキップして終了できます。

0
Angelo Fuchs

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

Javaソリューションについては、私の知る限り、Javaは標準UTF-8を理解していません。グーグルで見つけましたJavaのUTF-8およびUnicodeの記述は壊れています-この修正を使用してくださいそれが解決策である可能性があります。

0
Jeow Li Huan

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

0
Thomas