ホームページ > Java > &#&チュートリアル > UTF-8 ファイル読み取りで BOM マーカーを処理するにはどうすればよいですか?

UTF-8 ファイル読み取りで BOM マーカーを処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-26 10:59:12
オリジナル
906 人が閲覧しました

How to Handle BOM Markers in UTF-8 File Reading?

UTF-8 ファイル読み取り時の BOM マーカーの処理

バイト オーダー マーク ( BOM)、予期しない出力を避けるために、BOM を正しく処理することが重要です。 BOM は、ファイルのバイト順序を示す特別なバイト シーケンスです。 UTF-8 では、BOM は 3 バイトのシーケンス EF BB BF です。

次のコードを考えてみましょう:

fr = new FileReader(file);
br = new BufferedReader(fr);
String tmp = null;
while ((tmp = br.readLine()) != null) {
    String text;    
    text = new String(tmp.getBytes(), "UTF-8");
    content += text + System.getProperty("line.separator");
}
ログイン後にコピー

このコードでは、BOM は出力文字列に含まれます。 getBytes() メソッドは BOM を含む文字列の生のバイトを取得するためです。 BOM を正しく処理するには、次の手法を使用できます。

方法 1: BOM 文字セットを指定する

次のコマンドを使用して、文字セットを UTF-8 として指定できます。 Charset クラスを使用した BOM:

Charset charset = Charset.forName("UTF-8");
String text = new String(tmp.getBytes(charset), charset);
ログイン後にコピー

方法 2: 読み取りとドロップBOM

BOM が必要ない場合は、ファイルの残りの部分を処理する前に BOM を読み取って削除できます。

char[] bom = new char[3];
int bytesRead = br.read(bom, 0, bom.length);
if (bytesRead == bom.length && new String(bom).equals("\uFEFF")) {
    // BOM exists, drop it
}
ログイン後にコピー

これらの手法のいずれかを実装することで、 BOM が正しく処理されていること、および出力文字列に BOM マーカーが含まれていないこと。

以上がUTF-8 ファイル読み取りで BOM マーカーを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート