Vad är BOM?
Byteordningsmarkeringen (BOM), eller byteordningsmarkeringen, är en speciell markering som infogas i en Unicode-fil kodad med UTF-8, UTF16 eller UTF-32 för att identifiera kodningstypen för en Unicode-fil. För UTF-8 krävs ingen BOM, eftersom den används för att markera kodningstypen och byteordningen (big-endian eller little-endian) för en flerbyteskodad fil. I UTF-8 uttrycks antalet bitar kodade för varje tecken med den första bytet, och det finns ingen skillnad mellan big-endian och little-endian. UTF-8 kräver ingen styckliste, även om Unicode-standarden tillåter användning av stycklistor i UTF-8. Därför är UTF-8 utan BOM standardformuläret, och det är främst Microsofts vana att placera en BOM i en UTF-8-fil (förresten: det är också Microsofts vana att kalla UTF-16 med en BOM för "Unicode" utan att gå in på detaljer). Verklistor förbereds för UTF-16 och UTF-32 för att markera byteordning. Microsoft använder BOM i UTF-8 eftersom det möjliggör en tydlig skillnad mellan UTF-8 och ASCII-kodning, annars kan öppningen av en CSV-fil i Excel bli osammanhängande. Men en sådan fil kan orsaka problem i operativsystem som inte är Windows. Skillnaden mellan "UTF-8" och "UTF-8 med styckliste" är om det finns en stykklista eller inte. Det vill säga, om det finns en U+FEFF i början av filen. UTF-8-webbkod bör inte använda stycklistor, annars är fel vanliga. När man skickar ut en CSV-fil från HTTP-svar ingår den inte som standard när den är inställd på utf8 BOM, men Windows Excel använder BOM för att bekräfta UTF8-kodning, och alla måste skriva BOM till början av filen.
När du först utvecklar en Java-kodgenerator lägger du filen direktSkriv till en UTF-8-fil som innehåller BOM-taggenDetta leder till förpackningsfel, enligt följande:
Olagliga tecken: '\ufeff'
Hur använder jag .NET / C# för att avgöra om en fil innehåller BOM-taggar? , koden är följande:
Kollegor, bifogadeKonverterar UTF-8 BOM-formatet till UTF-8 (utan BOM-taggar) formatet, den fullständiga koden är som följer:
(Slut)
|