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

Kodowanie UTF-8, Unicode, XML - błędne oznaczenie
KO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 10 godzin
  • Postów:427
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ć?

edytowany 1x, ostatnio: aurel
JU
  • Rejestracja:około 22 lata
  • Ostatnio:2 miesiące
  • Postów:5042
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.

edytowany 1x, ostatnio: Juhas
aurel
Moderator
  • Rejestracja:około 15 lat
  • Ostatnio:około 18 godzin
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.

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
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.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:3 minuty
1

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

KO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około 10 godzin
  • Postów:427
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.