Kodowanie UTF-8, Unicode, XML - błędne oznaczenie

0

Problem jest dość ogólny i niekoniecznie dotyczy C#, ale w nim piszę aplikację więc postanowiłem napisać pytanie w tym dziale.

Do pewnej aplikacji można importować dane za pośrednictwem plików XML. Plik XML zaczyna się tak: <?xml version="1.0" encoding="UTF-8"?>
Stringi w C# zawsze są kodowane do UNICODE. Teoretycznie więc, jeśli chcę coś zapisać do takiego XML-a to muszę najpierw przerobić UNICODE na UTF-8.
Teoretycznie mogę zamienić sobie nagłówek w XML-u na UNICODE, ale zakładam, że to przeoczę...

A moje pytanie brzmi: czy jeśli oznaczę XML jako UTF-8, ale dane faktycznie zostaną zapisane jako UNICODE to jakie mogą być tego konsekwencje? Czy może coś się przez to wykrzaczyć?

2

Nie zwracaj na to w ogóle uwagi. Stringi w C# domyślnie są jako UTF-16. Ale to są stringi. Nie parsujesz sam pliku, tylko masz do tego odpowiedni mechanizm (odpowiednie klasy), który wszystko ogarnia za Ciebie.
Poczytaj po prostu: "C# XML" i nie interesuje Cię żadne kodowanie.

1

A moje pytanie brzmi: czy jeśli oznaczę XML jako UTF-8, ale dane faktycznie zostaną zapisane jako UNICODE to jakie mogą być tego konsekwencje? Czy może coś się przez to wykrzaczyć?

Nie rób tak. Kodowanie pliku powinno zawsze zgadzać się z tym podanym w nagłówku. C# to ogarnia, przy wczytywaniu xmla do programu nie ma żadnych problemów z kodowaniem utf8.

1

Do C# (w zasadzie do każdego języka) masz od groma różnych parserów xml-a i one za ciebie ogarniają kodowanie, więc totalnie nie rozumiem z czym masz problem.

1

Sam .net framework ma dwa parsery wbudowane (stary i linqowy) więc nie ma co pisać albo szukać.

0

Dziękuję za informacje i wskazówki. Faktycznie o parserze nie pomyślałem, ale teraz na pewno z niego skorzystam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1