我正在向业务合作伙伴发送数据。合作伙伴的需求很明确:UTF-8签署了XML。此外,他们希望收到不是实体符号的德语变音符号。
这个 german site 告诉它十进制表示法。但它意味着相同。
那么如何告诉编码如何发送变音符号?
提前致谢!
//编辑:业务合作伙伴确认他们以实体表示法收到变音符号(&#123)
// edit2:这是我用来发送数据的代码
WebClient client = new WebClient
{
Proxy = new WebProxy("wwwproxy", 80)
{
Credentials = CredentialCache.DefaultCredentials
}
};
byte[] response = client.UploadData(
Data.Resources.gateway_uri,
Encoding.UTF8.GetBytes(request.ToString(SaveOptions.DisableFormatting)));
return XDocument.Parse(System.Text.Encoding.UTF8.GetString(response));
答案 0 :(得分:1)
我猜测request
是一个XNode
实例,我猜它的ToString
方法试图通过编码ASCII范围之外的大多数字符来避免编码问题,因为它不能知道最终的编码是什么。
为了更好地控制编码,您需要使用带有流的XML编写器:
MemoryStream buffer = new MemoryStream();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8; // should be the default, but you never know
XMLWriter writer = XMLWriter.Create(buffer, settings);
request.WriteTo(writer);
writer.Flush();
byte[] requestData = buffer.ToArray();
byte[] response = client.UploadData(Data.Resources.gateway_uri, requestData);