Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 14853|Odgovoriti: 0

[Vir] Težave s predponami BOM pri branju Unicode datotek (UTF-8 itd.) v Javi

[Kopiraj povezavo]
Objavljeno na 14. 01. 2019 16:26:17 | | |
Problem prvih znakov BOM, ki se pojavijo pri branju Unicode datotek (UTF-8 itd.) v Javi, in kako se z njimi spoprijeti

Besedilne datoteke, ustvarjene z urejevalnikom besedila v Windows, bodo imele dodano ID BOM v glavo datoteke (prvi znak), če jih želite shraniti v Unicode formatu, kot je UTF-8.

Ta identifikacija se ne odstrani, ko se datoteka bere v Javi, in String.trim() ni mogoče odstraniti. Če uporabiš readLine() za branje prve vrstice in jo shraniš v niz, bo dolžina niza za 1 večja od tiste, ki jo vidiš, prvi znak pa je ta BOM.

To lahko povzroči nekaj težav, na primer pri branju ini datoteke, če želite ugotoviti, ali se prva vrstica začne z "[", ne morete pravilno presoditi.

Na srečo, ko Java bere Unicode datoteke, enakomerno spremeni BOM v "\uFEFF", tako da ga lahko ročno rešite (po presoji, uporabite substring() ali replace() za odstranitev tega BOM):

Vendar pa,Ta pristop ni popolnČe generirana jar datoteka teče pod Windows, je težava še vedno prisotna. Končna rešitev je uporaba BOMInputStream, ki ga zagotavlja apache commons io:

Kaj je BOM?


BOM = oznaka vrstnega reda bajtov
BOM je priporočena metoda označevanja vrstnega reda bajtov v Unicode specifikaciji. Na primer, za UTF-16, če sprejemnik prejme BOM FEFF, to pomeni, da je bajtni tok Big-Endian; Če je FFFE sprejet, to pomeni, da je bajtni tok Little-Endian.
UTF-8 ne zahteva BOM za označevanje vrstnega reda bajtov, lahko pa označi "I am UTF-8 kodiran". UTF-8 kodiranje BOM-a je EF BB BF (kar vidimo z odpiranjem besedila z UltraEdit in preklopom na šestnajstiško). Torej, če sprejemnik prejme bajtni tok, ki se začne z EF BB BF, ve, da gre za UTF-8 kodiranje.





Prejšnji:Jacksonove pogoste rešitve napak
Naslednji:Natakarska programska oprema za barkodiranje!
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com