Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 14853|Svare: 0

[Kilde] Problemer med BOM-prefikser oppstår når man leser Unicode-filer (UTF-8, osv.) i Java

[Kopier lenke]
Publisert på 14.01.2019 16:26:17 | | |
Problemet med de første BOM-tegnene man møter når man leser Unicode-filer (UTF-8, osv.) i Java og hvordan man håndterer dem

Tekstfiler laget med en teksteditor i Windows vil få en BOM-ID lagt til i filheaderen (det første tegnet) hvis du velger å lagre dem i Unicode-format som UTF-8.

Denne identifikasjonen fjernes ikke når filen leses i Java, og String.trim() kan ikke fjernes. Hvis du bruker readLine() for å lese den første linjen og lagrer den i strengen, vil lengden på strengen være én større enn det du ser, og det første tegnet er denne listelisten.

Dette kan skape problemer, for eksempel når du leser en ini-fil, hvis du vil vite om første linje starter med "[", kan du ikke bedømme riktig.

Heldigvis, når Java leser Unicode-filer, endrer det ensartet stykklisten til "\uFEFF", så du kan løse det manuelt (etter vurdering, bruk substring() eller replace() for å fjerne denne stykklisten):

Men,Denne tilnærmingen er ikke perfektHvis den genererte jar-filen kjører under Windows, er det fortsatt et problem. Den ultimate løsningen er å bruke BOMInputStream levert av apache commons io:

Hva er BOM?


BOM = Byte Order
Stykklisten er den anbefalte metoden for å markere rekkefølgen på bytes i Unicode-spesifikasjonen. For eksempel, for UTF-16, hvis mottakeren mottar en BOM av FEFF, indikerer det at bytestrømmen er Big-Endian; Hvis FFFE mottas, indikerer det at bytestrømmen er Little-Endian.
UTF-8 krever ikke en BOM for å indikere byterekkefølge, men den kan brukes til å indikere «Jeg er UTF-8-kodet». UTF-8-kodingen av BOM er EF BB BF (som sett ved å åpne tekst med UltraEdit og bytte til heksadesimal). Så hvis mottakeren mottar en bytestrøm som starter med EF BB BF, vet de at det er UTF-8-koding.





Foregående:Jackson-løsninger for vanlige feil
Neste:Bartender for bartender for barkodingsprogramvare!
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com