Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14853|Atsakyti: 0

[Šaltinis] KS priešdėlio problemos, su kuriomis susiduriama skaitant Unicode failus (UTF-8 ir kt.) Java

[Kopijuoti nuorodą]
Paskelbta 2019-01-14 16:26:17 | | |
KS pirmųjų simbolių problema, su kuria susiduriama skaitant Unicode failus (UTF-8 ir kt.) Java, ir kaip su jais elgtis

Teksto failų, sukurtų naudojant Windows teksto rengyklę, KS ID bus pridėtas prie failo antraštės (pirmasis simbolis), jei pasirinksite juos įrašyti Unicode formatu, pvz., UTF-8.

Šis identifikavimas nepašalinamas, kai failas skaitomas Java, o String.trim() pašalinti negalima. Jei naudosite readLine(), kad perskaitytumėte pirmąją eilutę ir išsaugotumėte ją eilutėje, eilutės ilgis bus 1 didesnis nei matote, o pirmasis simbolis yra ši KS.

Tai gali sukelti tam tikrų problemų, pvz., skaitant ini failą, jei norite pasakyti, ar pirmoji eilutė prasideda "[", negalite teisingai spręsti.

Laimei, kai Java skaito Unicode failus, ji tolygiai pakeičia KS į "\uFEFF", todėl galite ją išspręsti rankiniu būdu (po sprendimo naudokite substring() arba replace(), kad pašalintumėte šią KS):

TačiauŠis požiūris nėra tobulasJei sugeneruotas jar failas veikia sistemoje Windows, vis tiek yra problema. Galutinis sprendimas yra naudoti BOMInputStream, kurį teikia apache commons io:

Kas yra KS?


KS = baitų užsakymo ženklas
KS yra rekomenduojamas būdas žymėti baitų tvarką Unicode specifikacijoje. Pavyzdžiui, UTF-16, jei imtuvas gauna FEFF KS, tai rodo, kad baitų srautas yra Big-Endian; Jei gaunamas FFFE, tai rodo, kad baitų srautas yra Little-Endian.
UTF-8 nereikalauja KS baitų tvarkai nurodyti, tačiau ji gali būti naudojama nurodant "Aš esu užkoduotas UTF-8". KS UTF-8 kodavimas yra EF BB BF (kaip matyti atidarius tekstą naudojant UltraEdit ir perjungus į šešioliktainį). Taigi, jei imtuvas gauna baitų srautą, prasidedantį EF BB BF, jie žino, kad tai UTF-8 kodavimas.





Ankstesnis:Jacksono dažni klaidų sprendimai
Kitą:Bar kodavimo programinė įranga Barmenas!
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com