Hvad er BOM?
Byte-ordensmærket (BOM), eller byte-ordensmærket, er et særligt mærke, der indsættes i en Unicode-fil kodet med UTF-8, UTF16 eller UTF-32 for at identificere kodningstypen af en Unicode-fil. For UTF-8 er en stukliste ikke nødvendig, da den bruges til at markere kodningstypen og byterækkefølgen (big-endian eller little-endian) for en multibyte-kodet fil. I UTF-8 udtrykkes antallet af bit, der kodes for hvert tegn, med den første byte, og der er ingen forskel mellem big-endian og little-endian. UTF-8 kræver ikke en stykkliste, selvom Unicode-standarden tillader brugen af stykkliste i UTF-8. Derfor er UTF-8 uden en BOM standardformen, og det er hovedsageligt Microsofts vane at placere en stukliste i en UTF-8-fil (for resten: det er også Microsofts vane at kalde UTF-16 med en stukliste "Unicode" uden at gå i detaljer). Stykkteliste forberedes til UTF-16 og UTF-32 for at markere byte-rækkefølge. Microsoft bruger BOM i UTF-8, fordi det tillader en klar skelnen mellem UTF-8 og ASCII-kodning, ellers kan åbning af en CSV-fil i Excel være forvansket. Men en sådan fil kan forårsage problemer i andre operativsystemer end Windows. Forskellen mellem "UTF-8" og "UTF-8 med BOM" er, om der er en BOM eller ej. Det vil sige, om der er en U+FEFF i begyndelsen af filen. UTF-8 webkode bør ikke bruge stykkliste, ellers er fejl almindelige. Når man udskriver en CSV-fil fra HTTP Response, er den ikke inkluderet som standard, når den er sat til utf8 BOM, men Windows Excel bruger BOM til at bekræfte UTF8-kodning, og alle skal skrive BOM til begyndelsen af filen.
Når du først udvikler en Java-kodegenerator, lægger du filen direkteSkriv til en UTF-8-fil, der indeholder BOM-taggetDette vil føre til emballagefejl, som følger:
Hvordan bruger jeg .NET / C# til at afgøre, om en fil indeholder stuklistetags? , koden er som følger:
Kolleger, vedhæftetKonverterer UTF-8 BOM-formatet til UTF-8 (uden BOM-tags) formatet, den fulde kode er som følger:
(Slut)
|