Wie man Notizblock herstellt, um Text in UTF-8 ohne BOM zu speichern?

Ich habe eine CSV- Datei mit speziellen Akzenten und speichern sie im Editor, indem Sie UTF-8-Codierung auswählen. Wenn ich die Datei mit Java lese, liest sie auch die BOM-Zeichen.

Daher möchte ich diese Datei im UTF-8-Format speichern, ohne zunächst eine Stückliste in Notepad anzuhängen.

Gibt es sonst eine integrierte class in Java, die die BOM-Zeichen, die zu Beginn beim Lesen des Inhalts in einer Datei vorhanden sind, eliminiert?

  1. Verwenden Sie Notepad ++ – kostenlos und viel besser als Notepad. Es hilft Ihnen, Text ohne Stückliste zu speichern, indem Sie Encoding > Encode in UTF-8 ohne BOM verwenden : Screenshot der Notepad ++ Menüleiste/> Encoding> In UTF-8 ohne BOM-Menü in Notepad ++ v6.7.9.2″></p>
</li>
<li>
<p>  Wenn dieses Problem in Java aufgetreten ist, habe ich keine Bibliothek gefunden, die diese ersten drei Bytes (BOM) analysiert.  Also mein Rat: </p>
<ul>
<li> Verwenden Sie <code>PushbackInputStream(in, 3)</code> . </li>
<li>  Lesen Sie die ersten drei Bytes </li>
<li>  Wenn es nicht BOM ( <em>EF BB BF</em> ) ist, drücken Sie sie zurück </li>
<li>  Verarbeite den Stream als UTF-8 </li>
</ul>
</li>
</ol>
</div>
</li><!-- #comment-## -->
<div class=

    Verwenden Sie stattdessen Notepad ++. Siehe meinen persönlichen Blogeintrag darauf. Wählen Sie in Notepad ++ das Menü “Encoding” und dann “In UTF-8 ohne BOM codieren”.

Ich habe gerade von diesem Stack-Overflow-Post erfahren, wie @ martin-geisler darauf hinweist, dass Sie Dateien ohne die Stückliste im Windows-Editor speichern können, indem Sie ANSI als Codierung auswählen.

Ich gehe davon aus, dass dies für fortgeschrittene Anwendungen nicht funktionieren wird, da die resultierende Datei wahrscheinlich nicht die gewünschte Enkodierung ist, sondern tatsächlich ANSI; aber ich habe getestet und bestätigt, dass dies funktioniert, um ein sehr kleines PHP-Skript ohne BOM zu speichern, das nur Notepad verwendet.

Ich habe die lange, harte Art und Weise gelernt, dass Windows Notepad kein echter Editor ist, obwohl ich für andere darauf hinweisen möchte, dass es trotzdem irreführend aufgerufen wird, wenn Sie auf neueren Windows-Rechnern “Editor” eingeben auf einer von mir.

Ich verwende derzeit Emacs und andere Editoren, um dieses Problem zu lösen.

Die Antwort ist: Überhaupt nicht. Editor kann das nicht tun.

In Java können Sie einfach das erste Byte in Ihrem InputStream überspringen und fertig sein.

Vielleicht möchten Sie Notepad2 oder Notepad ++ ausprobieren. Bei diesen Notepad-Ersetzungen können Sie auswählen, ob die Stückliste ausgegeben werden soll.

Soweit ich weiß, versteht Java den Standard UTF-8 nicht. Ich habe gegoogelt und festgestellt, dass Java UTF-8 und Unicode-Schreiben ist gebrochen – Verwenden Sie dieses Update , das die Lösung sein könnte.

Wir verwenden das Dienstprogramm BOMstripperInputStream.java , um die BOM aus unserer Eingabe zu entfernen , falls sie vorhanden ist.