Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 14853|Yanıt: 0

[Kaynak] Java'da Unicode dosyalarını (UTF-8 vb.) okurken karşılaşılan BOM ön ek sorunları

[Bağlantıyı kopyala]
Yayınlandı 14.01.2019 16:26:17 | | |
Java'da Unicode dosyalarını (UTF-8 vb.) okurken karşılaşılan BOM ilk karakter sorunu ve bunlarla nasıl başa çıkılacağı

Windows'ta metin düzenleyiciyle oluşturulan metin dosyalarına, UTF-8 gibi Unicode formatında kaydetmeyi seçerseniz, dosya başlığına (ilk karaktere) BOM ID eklenecektir.

Bu tanımlama dosya Java'da okunduğunda kaldırılmaz ve String.trim() kaldırılamaz. İlk satırı okumak için readLine() kullanırsanız ve onu String'de saklarsanız, Dizinin uzunluğu gördüğünüzden 1 kat büyük olur ve ilk karakter bu BOM'dur.

Bu bazı sorunlara yol açabilir, örneğin ini dosyasını okurken, ilk satırın "[" ile başladığını anlamak istiyorsanız, doğru şekilde karar veremezsiniz.

Neyse ki, Java Unicode dosyalarını okuduğunda BOM'u "\uFEFF" olarak eşit şekilde değiştirir, böylece manuel olarak çözebilirsiniz (yargıdan sonra substring() veya replace() kullanarak bu BOM'u kaldırabilirsiniz):

Ancak,Bu yaklaşım mükemmel değildirOluşturulan jar dosyası Windows altında çalışıyorsa bile bir sorun var. Nihai çözüm, apache commons io tarafından sağlanan BOMInputStream'i kullanmaktır:

BOM nedir?


BOM = Bayt Sırası İşareti
BOM, Unicode spesifikasyonunda bayt sırasını işaretlemek için önerilen yöntemdir. Örneğin, UTF-16 için, alıcı FEFF BOM alırsa, bayt akışının Big-Endian olduğunu gösterir; FFFE alınırsa, bayt akışının Little-Endian olduğunu gösterir.
UTF-8, bayt sırasını belirtmek için BOM gerektirmez, ancak "UTF-8 kodluydum" diye belirtmek için kullanılabilir. BOM'un UTF-8 kodlaması EF BB BF'DIR (metin UltraEdit ile açılıp onaltılığa geçildiğinde görüldüğü gibi). Yani alıcı EF BB BF ile başlayan bir bayt akışı alırsa, bunun UTF-8 kodlaması olduğunu bilir.





Önceki:Jackson ortak hata çözümleri
Önümüzdeki:Bar Kodlama Yazılımı Barmen!
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com