This always works in Jabber-Net:
System.Text.Encoding.UTF8.GetBytes(elem.OuterXml)
On Dec 10, 2005, at 3:42 PM, Norman Rasmussen wrote:
Trying to get an object serialized into a utf-8 xml string _without_
the 0xfeff header.
public static string GetStringFromObject(object Object, Type Type) {
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms, Encoding.UTF8);
XmlTextWriter xw = new XmlTextWriter(sw);
xw.Formatting = Formatting.Indented;
XmlSerializer serializer = new XmlSerializer(Type);
serializer.Serialize(xw, Object);
return Encoding.UTF8.GetString(ms.ToArray()).TrimStart('\xfeff');
}
if I tried it any other way, then either the xml would be labeled as
utf-16 (when it was actually utf-8/ascii - who knows because it all
happened to be 7-bit clean) and the web service would bitch, or it
would be utf-16 and the web service would bitch, or I managed to get
utf-8 encoding (and the xml header said it was utf-8), but the web
service I was sending the string to would choke on the utf-8 leader.
On 12/10/05, David Waite <[EMAIL PROTECTED]> wrote:
As you found, sometimes the .net framework actually does a utf-16
encoding when you ask it for utf-8. This has nailed me recently
when
trying to use webservices. I ended up having to add and remove the
'marker' bytes (0xff, 0xfe) at the front of the byte array to get it
to work properly.
Are you encoding using the io framework rather than the text
encoding framework?
-David Waite
--
- Norman Rasmussen
- Email: [EMAIL PROTECTED]
- Home page: http://norman.rasmussen.co.za/