Rumah > Java > javaTutorial > Bagaimana untuk Mengekalkan BOM Semasa Membaca Fail UTF-8 di Java?

Bagaimana untuk Mengekalkan BOM Semasa Membaca Fail UTF-8 di Java?

Mary-Kate Olsen
Lepaskan: 2024-11-24 15:44:15
asal
727 orang telah melayarinya

How to Retain the BOM When Reading UTF-8 Files in Java?

Membaca UTF-8 dengan Penanda BOM: Memahami Output BOM Tidak Dijangka

Apabila membaca fail yang dikodkan dalam UTF-8 dengan Pesanan Bait Tandakan (BOM), adalah mungkin untuk menemui BOM yang disertakan dalam rentetan output. Ini berlaku kerana BOM, pengecam Unicode, disimpan sebagai jujukan bait tertentu pada permulaan fail.

Dalam kod Java yang diberikan, FileReader dan BufferedReader digunakan dengan sewajarnya untuk mengendalikan pembacaan fail UTF-8 . Walau bagaimanapun, isu timbul dalam baris berikutnya:

text = new String(tmp.getBytes(), "UTF-8");
Salin selepas log masuk

Barisan ini cuba menyahkod bait yang disimpan dalam rentetan tmp menggunakan set aksara UTF-8. Walau bagaimanapun, kaedah getBytes() pada String tidak mengekalkan penanda BOM daripada fail asal. Akibatnya, proses penyahkodan mengabaikan BOM, dan ia hilang dengan berkesan.

Untuk mengekalkan penanda BOM dalam rentetan output, sedikit pelarasan pada kod diperlukan:

byte[] bytes = tmp.getBytes("UTF-8");
if (isUTF8WithBOM(bytes)) {
    text = new String(bytes, 3, bytes.length - 3);
} else {
    text = new String(bytes, "UTF-8");
}
Salin selepas log masuk

Kaedah isUTF8WithBOM menyemak sama ada tatasusunan bait bermula dengan urutan BOM UTF-8 (0xEF, 0xBB, 0xBF). Jika benar, BOM dikeluarkan dengan menghiris tatasusunan bait untuk bermula dari bait ketiga. Ini memastikan bahawa proses penyahkodan seterusnya termasuk penanda BOM dalam rentetan output.

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

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