Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 14853|Vastaus: 0

[Lähde] BOM-etuliiteongelmia, joita ilmeni lukiessaan Unicode-tiedostoja (UTF-8 jne.) Javassa

[Kopioi linkki]
Julkaistu 14.1.2019 16.26.17 | | |
BOM-ensimmäisten merkkien ongelma, joka ilmenee Unicode-tiedostoja lukiessa Javalla (UTF-8 jne.) ja miten niitä käsitellään

Windowsissa tekstieditorilla luodut tekstitiedostot saavat BOM-ID:n tiedoston otsikkoon (ensimmäiseen merkkiin), jos haluat tallentaa ne Unicode-muodossa, kuten UTF-8:ssa.

Tätä tunnistetta ei poisteta, kun tiedosto luetaan Javalla, eikä String.trim():ää voi poistaa. Jos käytät readLine():tä lukeaksesi ensimmäisen rivin ja tallentaaksesi sen merkkijonoon, merkkijonon pituus on 1 suurempi kuin mitä näet, ja ensimmäinen merkki on tämä BOM.

Tämä voi aiheuttaa ongelmia, esimerkiksi lukiessasi ini-tiedostoa, jos haluat tietää, alkaako ensimmäinen rivi "[":llä, et osaa arvioida oikein.

Onneksi, kun Java lukee Unicode-tiedostoja, se vaihtaa BOM:n tasaisesti muotoon "\uFEFF", joten voit ratkaista sen manuaalisesti (tuomion jälkeen käytä substring() tai replace() poistaaksesi tämän BOM:n):

Kuitenkin,Tämä lähestymistapa ei ole täydellinenJos generoitu jar-tiedosto toimii Windowsissa, ongelma on silti olemassa. Paras kiertotapa on käyttää apache commons io:n tarjoamaa BOMInputStreamia:

Mikä on BOM?


BOM = tavujärjestysmerkki
BOM on suositeltu tapa merkitä tavujen järjestys Unicode-määrittelyssä. Esimerkiksi UTF-16:ssa, jos vastaanottaja saa BOM-arvon FEFF, se osoittaa, että tavuvirta on Big-Endian; Jos FFFE vastaanotetaan, se tarkoittaa, että tavuvirta on Little-Endian.
UTF-8 ei vaadi BOM:ia tavujärjestyksen osoittamiseen, mutta sitä voidaan käyttää ilmaisemaan "I am UTF-8 encoded". BOM:n UTF-8-koodaus on EF BB BF (kuten nähdään avaamalla tekstin UltraEditillä ja vaihtamalla heksadesimaaliin). Jos vastaanottaja saa tavuvirran, joka alkaa EF BB BF:llä, se tietää, että kyseessä on UTF-8-koodaus.





Edellinen:Jacksonin yleiset virheratkaisut
Seuraava:Baarikoodiohjelmiston baarimikko!
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com