Wat is BOM?
De byte-order mark (BOM), of byte-order mark, is een speciaal teken dat wordt ingevoegd in een Unicode-bestand dat is gecodeerd met UTF-8, UTF16 of UTF-32 om het coderingstype van een Unicode-bestand te identificeren. Voor UTF-8 is een BOM niet vereist, omdat deze wordt gebruikt om het coderingstype en bytevolgorde (big-endian of little-endian) van een meerbyte gecodeerd bestand aan te geven. In UTF-8 wordt het aantal bits dat voor elk teken wordt gecodeerd uitgedrukt door de eerste byte, en is er geen onderscheid tussen big-endian en little-endian. UTF-8 vereist geen stuklijst, hoewel de Unicode-standaard het gebruik van stuklisten in UTF-8 toestaat. Daarom is UTF-8 zonder een BOM de standaardvorm, en het is vooral Microsofts gewoonte om een BOM in een UTF-8-bestand te plaatsen (trouwens: het is ook de gewoonte van Microsoft om UTF-16 met een BOM "Unicode" te noemen zonder in details te treden). BOM's worden voorbereid voor UTF-16 en UTF-32 om bytevolgorde te markeren. Microsoft gebruikt BOM in UTF-8 omdat dit een duidelijk onderscheid maakt tussen UTF-8 en ASCII-codering, anders kan het openen van een CSV-bestand in Excel onhandig zijn. Maar zo'n bestand kan problemen veroorzaken in besturingssystemen anders dan Windows. Het verschil tussen "UTF-8" en "UTF-8 met BOM" is of er een BOM is of niet. Dat wil zeggen, of er een U+FEFF aan het begin van het bestand staat. UTF-8 webcode mag geen BOM's gebruiken, anders komen fouten vaak voor. Bij het invoeren van een CSV-bestand vanuit HTTP-antwoord wordt het standaard niet meegenomen wanneer het is ingesteld op utf8 BOM, maar Windows Excel gebruikt BOM om UTF8-codering te bevestigen, en allemaal moeten BOM aan het begin van het bestand worden geschreven.
Wanneer je voor het eerst een Java-codegenerator ontwikkelt, plaats je het bestand directSchrijf naar een UTF-8-bestand dat de BOM-tag bevatDit leidt tot verpakkingsfouten, als volgt:
Illegale karakters: '\ufeff'
Hoe gebruik ik .NET / C# om te bepalen of een bestand BOM-tags bevat? , de code is als volgt:
Collega's, bijgevoegdZet het UTF-8 BOM-formaat om naar het UTF-8 (zonder BOM-tags) formaat, de volledige code is als volgt:
(Einde)
|