See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 14853|Vastuse: 0

[Allikas] BOM-prefiksi probleemid, mis tekkisid Unicode failide (UTF-8 jne) lugemisel Java-s

[Kopeeri link]
Postitatud 14.01.2019 16:26:17 | | |
BOM-i esimeste märkide probleem, millega tekivad Unicode failide (UTF-8 jne) lugemisel Java-s ja kuidas nendega toime tulla

Windowsis tekstiredaktoriga loodud tekstifailidele lisatakse BOM ID failipäisele (esimene märk), kui salvestada need Unicode formaadis, näiteks UTF-8.

See identifitseerimine ei kao, kui faili loetakse Java-s, ning String.trim() ei saa eemaldada. Kui kasutad readLine() esimese rea lugemiseks ja salvestad selle stringi, on stringi pikkus 1 võrra suurem kui see, mida näed, ja esimene märk on see BOM.

See võib tekitada probleeme, näiteks ini-faili lugemisel, kui tahad teada, kas esimene rida algab tähega "[", ei saa sa õigesti hinnata.

Õnneks, kui Java loeb Unicode'i faile, muudab ta BOM-i ühtlaselt "\uFEFF"-iks, nii et saad selle käsitsi lahendada (pärast otsust kasuta substring() või replace() selle BOM-i eemaldamiseks):

KuidSee lähenemine ei ole täiuslikKui genereeritud jar-fail töötab Windowsis, on probleem ikkagi olemas. Parim lahendus on kasutada BOMInputStreami, mida pakub apache commons io:

Mis on BOM?


BOM = Baitide järjekorra märk
BOM on soovitatav meetod baitide järjekorra märkimiseks Unicode'i spetsifikatsioonis. Näiteks UTF-16 puhul, kui vastuvõtja saab BOM-i FEFF, näitab see, et baitvoog on Big-Endian; Kui FFFE vastu võetakse, näitab see, et baitvoog on Little-Endian.
UTF-8 ei nõua baitide järjekorra näitamiseks BOM-i, kuid seda saab kasutada selleks, et näidata "Olen UTF-8 kodeeritud". BOM-i UTF-8 kodeerimine on EF BB BF (nagu näha, kui avada teksti UltraEditiga ja lülituda kuueteistkümnendsüsteemile). Kui vastuvõtja saab baitvoo, mis algab EF BB BF-ga, teab ta, et see on UTF-8 kodeerimine.





Eelmine:Jacksoni levinud vealahendused
Järgmine:Baarikoodi tarkvara baarmen!
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com