UTF-8 でエンコードされたファイルを読み取るときに BOM マーカーの出力を回避するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-16 22:43:03
オリジナル
255 人が閲覧しました

How to Avoid Outputting the BOM Marker When Reading a UTF-8 Encoded File?

Unicode BOM と FileReader

バイト オーダー マーク (BOM) を持つ UTF-8 エンコード ファイルを読み取るときに、次の問題が発生する可能性があります。ファイルの内容とともに出力される BOM マーカーの。これは、Unicode がエンコードされたテキストのエンディアンを指定する BOM を定義しているために発生します。BOM は、適切に処理されないと文字シーケンスとして解釈される可能性があります。

コード スニペット内:

  • frと br は、ファイルをバイトとして読み取り、文字に変換するために使用されます。
  • tmp は、ファイルの各行をバイトとして読み取ります。 array.
  • text は、バイト配列を UTF-8 でエンコードされた文字列に変換します。
  • content は、ファイルのコンテンツの一部である BOM マーカーを含む、ファイルの行を連結します。

BOM マーカーが出力:

  1. ファイルをバイト配列ではなく文字列として読み取ります。これにより、バイトを文字に変換する必要がなくなり、BOM の問題が回避されます。
String content = new String(Files.readAllBytes(Paths.get(file)), "UTF-8"));
ログイン後にコピー
  1. ファイルをバイト配列として読み取る必要がある場合は、変換する前に BOM マーカーを手動で削除できます。それを文字列にします。 BOM マーカーは 3 バイトのシーケンスです:
if (tmp.length >= 3 &&
    tmp[0] == (byte) 0xEF &&
    tmp[1] == (byte) 0xBB &&
    tmp[2] == (byte) 0xBF) {

    // Remove the BOM marker
    tmp = Arrays.copyOfRange(tmp, 3, tmp.length);
}
ログイン後にコピー

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

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