Hva er BOM?
Byte-ordensmerket (BOM), eller byte-ordensmerket, er et spesielt merke som settes inn i en Unicode-fil kodet med UTF-8, UTF16 eller UTF-32 for å identifisere kodingstypen til en Unicode-fil. For UTF-8 kreves ikke en BOM, da den brukes til å markere kodingstypen og byterekkefølgen (big-endian eller little-endian) for en multibyte-kodet fil. I UTF-8 uttrykkes antall biter kodet for hvert tegn med den første byten, og det er ingen forskjell mellom big-endian og little-endian. UTF-8 krever ikke en stykkliste, selv om Unicode-standarden tillater bruk av stykklister i UTF-8. Derfor er UTF-8 uten BOM standardformen, og det er hovedsakelig Microsofts vane å plassere en BOM i en UTF-8-fil (forresten: det er også Microsofts vane å kalle UTF-16 med en BOM "Unicode" uten å gå inn på detaljer). BOM-er forberedes for UTF-16 og UTF-32 for å markere byte-rekkefølgen. Microsoft bruker BOM i UTF-8 fordi det gir en tydelig forskjell mellom UTF-8 og ASCII-koding, ellers kan åpning av en CSV-fil i Excel bli utydelig. Men en slik fil kan forårsake problemer i andre operativsystemer enn Windows. Forskjellen mellom "UTF-8" og "UTF-8 med BOM" er om det finnes en BOM eller ikke. Det vil si om det finnes en U+FEFF i begynnelsen av filen. UTF-8 webkode skal ikke bruke stykkliste, ellers er feil vanlige. Når man sender ut en CSV-fil fra HTTP Response, er den ikke inkludert som standard når den settes til utf8 BOM, men Windows Excel bruker BOM for å bekrefte UTF8-koding, og alle må skrive BOM til begynnelsen av filen.
Når du først utvikler en Java-kodegenerator, legger du filen direkte innSkriv til en UTF-8-fil som inneholder BOM-taggenDette vil føre til pakkingsfeil, som følger:
Hvordan bruker jeg .NET / C# for å avgjøre om en fil inneholder BOM-tagger? , koden er som følger:
Kolleger, vedlagtKonverterer UTF-8 BOM-formatet til UTF-8 (uten BOM-tagger) formatet, den fullstendige koden er som følger:
(Slutt)
|