エンコーディングの適切なバイト オーダー マークに対応するバイトを返す Java のユーティリティ メソッドまたは定数を探していますが、見つからないようです。ありますか?私は本当に次のようなことをしたいと思います:
byte[] bom = Charset.forName( CharEncoding.UTF8 ).getByteOrderMark();
CharEncoding
Apache Commons の由来はどこにありますか。
エンコーディングの適切なバイト オーダー マークに対応するバイトを返す Java のユーティリティ メソッドまたは定数を探していますが、見つからないようです。ありますか?私は本当に次のようなことをしたいと思います:
byte[] bom = Charset.forName( CharEncoding.UTF8 ).getByteOrderMark();
CharEncoding
Apache Commons の由来はどこにありますか。
Apache Commons IO には、探しているものが含まれています。 を参照してくださいorg.apache.commons.io.ByteOrderMark
。
次のように BOM を生成できます。
byte[] utf8_bom = "\uFEFF".getBytes("UTF-8");
byte[] utf16le_bom = "\uFEFF".getBytes("UnicodeLittleUnmarked");
この方法を使用して他のエンコーディング用の BOM を作成する場合は、BOM を自動的に挿入しないバージョンのエンコーディングを使用してください。そうしないと、BOM が繰り返されます。この手法は Unicode エンコーディングにのみ適用され、他のもの (Windows-1252 など) にとって意味のある結果は得られません。
私が見る限り、JDKには何もありませんし、Apacheプロジェクトもありません。
Eclipse EMF には Enum がありますが、サポートを提供します。
org.eclipse.emf.ecore.resource.ContentHandler.ByteOrderMark
それがあなたの助けになるかどうかわかりませんか?
各エンコーディング タイプのさまざまな BOM に関する詳細情報がここにあります。このために単純なヘルパー クラスまたは列挙型を作成できます...
http://mindprod.com/jgloss/bom.html
それが役立つことを願っています。正直なところ、これが Commons I/O にないことに驚いています。
多くのエンコーディングでは、バイト オーダー マークが使用されていないことに注意してください。たとえば、UTF-8 の空の文字列は単なる空の byte[] です。UTF-8 用に指定された BOM がありますが、Java ではめったに使用されず、常にサポートされているわけではありません。