Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 14853|Odpověď: 0

[Zdroj] Problémy s předponou BOM při čtení Unicode souborů (UTF-8 atd.) v Javě

[Kopírovat odkaz]
Zveřejněno 14.01.2019 16:26:17 | | |
Problém s prvními znaky BOM, na které se setkáme při čtení Unicode souborů (UTF-8 atd.) v Javě a jak s nimi naložit

Textové soubory vytvořené textovým editorem ve Windows budou mít k hlavičce souboru přidaný ID BOM (první znak), pokud je chcete uložit ve formátu Unicode, například UTF-8.

Tato identifikace není odstraněna při čtení souboru v Javě a String.trim() nelze odstranit. Pokud použijete readLine() k přečtení prvního řádku a uložení do řetězce, délka řetězce bude o 1 větší než to, co vidíte, a první znak je tento kusovník (BOM).

To může způsobit určité potíže, například při čtení ini souboru, pokud chcete zjistit, jestli první řádek začíná na "[", nemůžete správně posoudit.

Naštěstí, když Java čte Unicode soubory, jednotně změní BOM na "\uFEFF", takže to můžete vyřešit ručně (po vyhodnocení použít substring() nebo replace() k odstranění tohoto BOM):

Nicméně,Tento přístup není dokonalýPokud vygenerovaný jar soubor běží ve Windows, problém stále existuje. Konečným řešením je použít BOMInputStream poskytovaný apache commons io:

Co je to BOM?


BOM = Řád bajtů
BOM je doporučená metoda označování pořadí bajtů ve specifikaci Unicode. Například pro UTF-16, pokud přijímač obdrží BOM FEFF, znamená to, že bajtový proud je Big-Endian; Pokud je přijato FFFE, znamená to, že bajtový proud je Little-Endian.
UTF-8 nevyžaduje BOM pro označení pořadí bajtů, ale může být použit k označení "Jsem kódován UTF-8". UTF-8 kódování BOM je EF BB BF (jak je vidět při otevření textu pomocí UltraEdit a přechodu na hexadecimální formát). Takže pokud přijímač přijme bajtový proud začínající na EF BB BF, ví, že jde o kódování UTF-8.





Předchozí:Jacksonova běžná chybová řešení
Další:Barman v softwaru pro barové kódování!
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com