1

我正在向业务合作伙伴发送数据。合作伙伴的需求很明确:UTF-8 签名的 XML。此外,他们希望接收不在实体符号中的德语变音符号。

这个德国网站告诉它十进制表示法。但意思是一样的。

那么如何告诉编码如何发送元音变音呢?

提前致谢!

//编辑:业务伙伴确认他们收到实体符号中的变音符号 ({)

//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));
4

1 回答 1

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);
于 2012-10-26T13:23:29.370 回答