Generuję plik utf-8 XML przy użyciu XDocument
.XDocument: zapisywanie pliku XML do pliku bez zestawienia komponentów
XDocument xml_document = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement(ROOT_NAME,
new XAttribute("note", note)
)
);
...
xml_document.Save(@file_path);
Plik jest generowany poprawnie i sprawdzany z plikiem xsd z powodzeniem.
Kiedy próbuję przesłać plik XML do usługi online, usługa mówi, że mój plik to wrong at line 1
; Odkryłem, że problem jest spowodowany przez BOM na pierwszych bajtach pliku.
Czy wiesz, dlaczego BOM jest dołączany do pliku i jak mogę zapisać plik bez niego?
Jak stwierdzono w Byte order mark Wikipedia artykuł:
Choć norma Unicode pozwala BOM w UTF-8 nie wymaga ani polecić. kolejność bajtów ma znaczenie w UTF-8, a więc BOM tylko służy do identyfikacji strumienia tekstowego lub plik jako UTF-8 lub że został przekształcony z innego formatu, który ma BOM
Czy to XDocument
problem czy powinienem skontaktować się z facetami dostawcy usług internetowych, aby poprosić o aktualizację parsera?
Kiedy otworzysz go za pomocą Notepada ++, czy wciąż jest w utf-8, nawet używając 'nowego UTF8Encoding (false)'? – systempuntoout
Myślałem, że chcesz go w UTF-8, tylko bez BOM? –
Tak, zgadza się. Właśnie pytałem, czy 'nowe UTF8Encoding (false)' może mieć inne implikacje. – systempuntoout