Czym jest BOM?
Znak kolejności bajtów (BOM), czyli znak kolejności bajtów, to specjalny znak wstawiany do pliku Unicode zakodowanego w UTF-8, UTF16 lub UTF-32, aby zidentyfikować typ kodowania pliku Unicode. Dla UTF-8 nie jest wymagana baza BOM, ponieważ służy do oznaczania typu kodowania i kolejności bajtów (big-endian lub little-endian) wielobajtowego pliku zakodowanego. W UTF-8 liczba bitów zakodowanych dla każdego znaku wyrażana jest przez pierwszy bajt i nie ma rozróżnienia między big-endianem a little-endianem. UTF-8 nie wymaga BOM, chociaż standard Unicode pozwala na użycie BOM-ów w UTF-8. Dlatego UTF-8 bez BOM jest standardową formą, a w Microsoftzie jest to głównie zwyczaj umieszczania BOM w pliku UTF-8 (przy okazji: Microsoft ma też zwyczaj wywoływać UTF-16 z BOM "Unicode" bez wchodzenia w szczegóły). Kopie BOM są przygotowywane dla UTF-16 i UTF-32 do oznaczania kolejności bajtów. Microsoft używa BOM w UTF-8, ponieważ pozwala to wyraźnie rozróżnić kodowanie UTF-8 i ASCII, w przeciwnym razie otwarcie pliku CSV w Excelu może zostać zniekształcone. Jednak taki plik może powodować problemy w innych systemach operacyjnych niż Windows. Różnica między "UTF-8" a "UTF-8 z BOM" polega na tym, czy istnieje BOM, czy nie. To znaczy, czy na początku pliku znajduje się U+EFF. Kod UTF-8 nie powinien używać BOM-ów, w przeciwnym razie błędy są powszechne. Podczas wyprowadzania pliku CSV z odpowiedzi http, nie jest on domyślnie uwzględniany przy ustawieniu na utf8 BOM, ale Windows Excel używa BOM do potwierdzenia kodowania UTF8 i wszystkie muszą zapisywać BOM na początku pliku.
Gdy po raz pierwszy tworzysz generator kodu Java, umieszczasz plik bezpośrednioZapisz do pliku UTF-8, który zawiera tag BOMTo prowadzi do błędów opakowaniowych, jak następuje:
Postacie nielegalne: '\ufeff'
Jak użyć .NET / C#, aby określić, czy plik zawiera tagi BOM? , kod jest następujący:
Współpracownicy, dołączeniKonwertuje format BOM UTF-8 na format UTF-8 (bez tagów BOM), pełny kod wygląda następująco:
(Koniec)
|