Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengelakkan Mengeluarkan Penanda BOM Semasa Membaca Fail Berkod UTF-8?

Mary-Kate Olsen
Lepaskan: 2024-11-16 22:43:03
asal
255 orang telah melayarinya

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

Unicode BOM dan FileReader

Apabila membaca fail yang dikodkan UTF-8 dengan Tanda Pesanan Bait (BOM), anda mungkin menghadapi masalah ini daripada penanda BOM yang dikeluarkan bersama dengan kandungan fail. Ini berlaku kerana Unicode mentakrifkan BOM untuk menentukan endian teks yang dikodkan, yang boleh ditafsirkan sebagai jujukan aksara jika tidak dikendalikan dengan betul.

Dalam coretan kod anda:

  • fr dan br digunakan untuk membaca fail sebagai bait dan menukarnya kepada aksara.
  • tmp membaca setiap baris fail sebagai tatasusunan bait.
  • teks menukar tatasusunan bait kepada UTF-8 rentetan yang dikodkan.
  • kandungan menggabungkan baris fail, termasuk penanda BOM kerana ia merupakan sebahagian daripada kandungan fail.

Untuk mengelakkan penanda BOM daripada disertakan dalam output :

  1. Baca fail sebagai String, bukan sebagai tatasusunan bait. Ini melangkau keperluan untuk menukar bait kepada aksara, mengelakkan isu BOM.
String content = new String(Files.readAllBytes(Paths.get(file)), "UTF-8"));
Salin selepas log masuk
  1. Jika anda mesti membaca fail sebagai tatasusunan bait, anda boleh mengalih keluar penanda BOM secara manual sebelum menukar ia kepada rentetan. Penanda BOM ialah jujukan tiga bait:
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);
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Mengeluarkan Penanda BOM Semasa Membaca Fail Berkod UTF-8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan