Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno [.NET] XmlTextWriter, StringWriter a zmena kódovania

mám metódu:

function TTemplate.GetChangedControls: string;
var
  Xml: XmlTextWriter;
  StringText: StringWriter;
begin
  Result := '';
  StringText := StringWriter.Create;
  Xml := XmlTextWriter.Create(StringText);
  try
    Xml.WriteStartDocument;
    Xml.WriteStartElement('controls');

    Xml.WriteStartElement('control');
    Xml.WriteAttributeString('id', 'test');
    Xml.WriteCData('<button >');
    Xml.WriteEndElement;

    Xml.WriteEndElement;
    Xml.WriteEndDocument;
  finally
    Xml.Flush;
    Xml.Close;
    Result := StringText.ToString;
  end;
end;

a na výstupe dostanem:

<?xml version="1.0" encoding="utf-16"?>
<controls>
  <control id="test"><![CDATA[<button >]]></control>
</controls>

ako mám zmeniť kódovanie XML dokumentu z UTF16 na UTF8 ?

Předmět Autor Datum
StringWriter sa používa vtedy, keď chceš výsledok zapísať do reťazca v pamäti - všetky reťazce sú in…
los 22.10.2006 20:25
los
Ja nechcem to XML ukladať do súboru, ja som chcel XML poslať do klientského prehladača cez Response…
Zp 22.10.2006 20:48
Zp
V C# by si kódovanie nastavil pri vytvárení objektu triedy XmlTextWriter nejako takto, v Delphi to b…
los 22.10.2006 21:15
los
Díky, toto som hľadal.:-) poslední
Zp 22.10.2006 23:11
Zp
To si můžeš vyzkoušet. Mělo by.
Squad_leader 22.10.2006 21:23
Squad_leader

StringWriter sa používa vtedy, keď chceš výsledok zapísať do reťazca v pamäti - všetky reťazce sú interne kódované v UTF-16 a to sa nedá zmeniť. Na zapisovanie do súboru je StringWriter nevhodný, pretože jeho kódovanie nemôžeš zmeniť.

Ak chceš zmeniť kódovanie, tak použi objekt triedy Stream. Potom kódovanie nastavíš v konštruktore triedy XmlTextWriter.

Ja nechcem to XML ukladať do súboru, ja som chcel XML poslať do klientského prehladača cez

Response.Write();

(ako odpoveď javascriptovému objektu XMLHttpRequest).

Ako mám teda nastaviť kódovanie? Alebo sa ten reťazec, pri odosielaní ku klientovi prevázda automaticky do takého kódovania na aké je nastavená HTTP hlavička?

Zpět do poradny Odpovědět na původní otázku Nahoru