Jak wymusić dodanie BOM do HttpResponse?

Jak wymusić dodanie BOM do HttpResponse?
aurel
  • Rejestracja: dni
  • Ostatnio: dni
0

WebService zwraca xmla, który jest wyświetlany na stronie aspx w taki sposób:

Kopiuj
protected void Page_Load(object sender, EventArgs e)
{
    Response.Cache.SetNoStore();

    new Obiekt.DajXml().Save(Response.Output);
}

Xml domyślnie jest kodowany w utf8, ale niestety, nie jest dodawany do niego znacznik BOM. A aplikacja kliencka oczekuje znacznika BOM, jeśli xml jest kodowany w utf8. Jak wymusić dodanie BOM?

Ktos
  • Rejestracja: dni
  • Ostatnio: dni
0

Przepisać aplikację kliencką, bo to jest błędne.

A na serio - to zależy jak jest robiony Obiekt.DajXml() - ale ogólnie to taki System.Text.UTF8Encoding ma możliwość wywołania konstruktora, który zwróci także BOM. Czyli chyba można przekonwertować (ewentualnie, w zależności jak jest tworzony XML, odpowiednio wybrać kodowanie, używając drugiego konstruktora klasy UTF8Encoding.

Kopiuj
System.Text.Encoding.Convert(Encoding.UTF8Encoding, new Encoding.UTF8Encoding(true), tutajtablicabajtówbędącaxmlem);
ŁF
  • Rejestracja: dni
  • Ostatnio: dni
0

jeśli dobrze pamiętam, wystarczy Response.ContentEncoding = Encoding.UTF8 (UTF7/BigEndianUnicode/UTF32).
jutro w pracy spojrzę do kodu i potwierdzę.

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.