Rumah  >  Artikel  >  Java  >  Mengapa Penanda BOM Muncul dalam Output Pembaca Fail Semasa Membaca Fail Berkod UTF-8?

Mengapa Penanda BOM Muncul dalam Output Pembaca Fail Semasa Membaca Fail Berkod UTF-8?

DDD
DDDasal
2024-11-16 08:09:03785semak imbas

Why Does the BOM Marker Appear in FileReader Output When Reading UTF-8 Encoded Files?

Pemasukan Penanda BOM dalam Output FileReader

Apabila menggunakan FileReader untuk membaca fail yang dikodkan UTF-8 dengan BOM (Byte Order Mark ), penanda BOM mungkin secara tidak sengaja muncul dalam rentetan output. Ini berlaku kerana BOM disertakan sebagai sebahagian daripada perwakilan teks yang dikodkan UTF-8.

Untuk memahami sebab ini berlaku, adalah penting untuk ambil perhatian bahawa BOM ialah aksara khas atau jujukan aksara yang menunjukkan pengekodan fail teks. Dalam kes UTF-8, BOM diwakili oleh jujukan bait EFBBBF.

Apabila FileReader membaca fail, ia menyahkod aksara menggunakan pengekodan UTF-8. Walau bagaimanapun, BOM bukanlah aksara Unicode yang sah, jadi ia tidak dilangkau atau dialih keluar semasa proses penyahkodan. Sebaliknya, ia disertakan dalam rentetan yang dikembalikan oleh kaedah readLine().

Untuk mengelakkan isu ini, anda boleh menggunakan pendekatan berikut:

  • Potong BOM sebelum menyahkod: Anda boleh menggunakan kaedah substring() untuk mengalih keluar tiga aksara pertama daripada rentetan yang dikembalikan oleh readLine(). Ini akan mengalih keluar BOM sebelum ia dimasukkan ke dalam rentetan output.
  • Gunakan penyahkod BOM: Anda boleh menggunakan penyahkod yang direka khusus untuk mengendalikan BOM. Penyahkod sedemikian secara automatik akan melangkau atau mengabaikan BOM apabila menyahkod teks.

Atas ialah kandungan terperinci Mengapa Penanda BOM Muncul dalam Output Pembaca Fail Semasa Membaca Fail Berkod UTF-8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn