Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 14853|Jawab: 0

[Sumber] Masalah awalan BOM yang ditemui saat membaca file Unicode (UTF-8, dll.) di Java

[Salin tautan]
Diposting pada 14/01/2019 16.26.17 | | |
Masalah karakter BOM pertama yang ditemui saat membaca file Unicode (UTF-8, dll.) di Java dan cara mengatasinya

File teks yang dibuat dengan editor teks di Windows akan memiliki ID BOM yang ditambahkan ke header file (karakter pertama) jika Anda memilih untuk menyimpannya dalam format Unicode seperti UTF-8.

Identifikasi ini tidak dihapus saat file dibaca di Java, dan String.trim() tidak dapat dihapus. Jika Anda menggunakan readLine() untuk membaca baris pertama dan menyimpannya di String, panjang String akan menjadi 1 lebih besar dari yang Anda lihat, dan karakter pertama adalah BOM ini.

Hal ini dapat menyebabkan beberapa masalah, seperti saat membaca file ini, jika Anda ingin mengetahui apakah baris pertama dimulai dengan "[", Anda tidak dapat menilai dengan benar.

Untungnya, ketika Java membaca file Unicode, secara seragam mengubah BOM menjadi "\uFEFF", sehingga Anda dapat menyelesaikannya secara manual (setelah penilaian, gunakan substring() atau replace() untuk menghapus BOM ini):

Namun,Pendekatan ini tidak sempurnaJika file jar yang dihasilkan berjalan di bawah Windows, masih ada masalah. Solusi utama adalah menggunakan BOMInputStream yang disediakan oleh apache commons io:

Apa itu BOM?


BOM = Tanda Pesanan Byte
BOM adalah metode yang direkomendasikan untuk menandai urutan byte dalam spesifikasi Unicode. Misalnya, untuk UTF-16, jika penerima menerima BOM FEFF, ini menunjukkan bahwa aliran byte adalah Big-Endian; Jika FFFE diterima, ini menunjukkan bahwa bytestream adalah Little-Endian.
UTF-8 tidak memerlukan BOM untuk menunjukkan urutan byte, tetapi dapat digunakan untuk menunjukkan "Saya dikodekan UTF-8". Pengkodean UTF-8 BOM adalah EF BB BF (seperti yang terlihat dengan membuka teks dengan UltraEdit dan beralih ke heksadesimal). Jadi jika penerima menerima aliran byte yang dimulai dengan EF BB BF, mereka tahu itu adalah pengkodean UTF-8.





Mantan:Solusi kesalahan umum Jackson
Depan:Bartender Perangkat Lunak Pengkodean Bar!
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com