Tworzę XDocument tak:dlaczego Xdocument daje mi deklarację utf16?
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));
kiedy zapisać dokument tak (doc.Save(@"c:\tijd\file2.xml");
), otrzymuję to:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
których jest ok.
ale chcę wrócić zawartość jako XML i znalazłem następujący kod:
var wr = new StringWriter();
doc.Save(wr);
string s = (wr.GetStringBuilder().ToString());
ten kod działa, ale wtedy string 's' zaczyna się tak:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
więc zmieniło się z utf8 na utf16, i to nie jest to, czego chcę, ponieważ teraz nie mogę go odczytać w przeglądarce internetowej.
Czy istnieje sposób, aby temu zapobiec?
Jest duża Red Flag tutaj, pisarz ciąg naprawdę nie zawierają ciąg zakodowany w UTF-16. Nawet jeśli zastąpisz właściwość Kodowania. Jak to się dzieje od StringWriter do IE? –
Dobre pytanie. Zapisz ciąg 's' do pliku za pomocą File.WriteAllText, a następnie otwórz go za pomocą IE. Nie określiłem tego zbyt wyraźnie w moim pytaniu ... – Michel
Dobrze, wywołanie File.WriteAllText() jest tym, * które * naprawdę * określa kodowanie. Domyślnie jest to utf-8, chyba że używasz przeciążenia, które pobiera kodowanie. –