Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14853|Odpoveď: 0

[Zdroj] Problémy s prefixmi BOM pri čítaní Unicode súborov (UTF-8 a pod.) v Jave

[Kopírovať odkaz]
Zverejnené 14. 1. 2019 16:26:17 | | |
Problém s prvými znakmi BOM pri čítaní Unicode súborov (UTF-8 a pod.) v Jave a ako s nimi pracovať

Textové súbory vytvorené textovým editorom vo Windows budú mať k hlavičke súboru pridané ID BOM (prvý znak), ak sa rozhodnete uložiť ich v Unicode formáte, napríklad UTF-8.

Táto identifikácia sa neodstráni pri čítaní súboru v Jave a String.trim() nie je možné odstrániť. Ak použijete readLine() na prečítanie prvého riadku a uloženie do reťazca, dĺžka reťazca bude o 1 väčšia než to, čo vidíte, a prvý znak je tento BOM.

To môže spôsobiť problémy, napríklad pri čítaní ini súboru, ak chcete zistiť, či prvý riadok začína na "[", neviete správne posúdiť.

Našťastie, keď Java číta Unicode súbory, jednotne mení BOM na "\uFEFF", takže to môžete vyriešiť manuálne (po vyhodnotení použite substring() alebo replace() na odstránenie tohto BOM):

Avšak,Tento prístup nie je dokonalýAk vygenerovaný jar súbor beží pod Windows, problém stále existuje. Konečným riešením je použiť BOMInputStream poskytovaný apache commons io:

Čo je BOM?


BOM = Značka usporiadania bajtov
Kusovník je odporúčaná metóda označovania poradia bajtov v špecifikácii Unicode. Napríklad pre UTF-16, ak prijímač dostane BOM FEFF, znamená to, že bajtový tok je Big-Endian; Ak je prijaté FFFE, znamená to, že bajtový tok je Little-Endian.
UTF-8 nevyžaduje BOM na označenie poradia bajtov, ale môže sa použiť na označenie "Som UTF-8 zakódovaný". UTF-8 kódovanie kusovníka je EF BB BF (čo vidíte pri otvorení textu pomocou UltraEdit a prepnutí na hexadecimálne formáty). Takže ak prijímač prijme bajtový tok začínajúci EF BB BF, vie, že ide o kódovanie UTF-8.





Predchádzajúci:Jacksonove riešenia bežných chýb
Budúci:Barman na softvér na čiarové kódovanie!
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com