1

ビジネスパートナーにデータを送信しています。パートナーの要求は明確です。UTF-8 署名付き XML です。さらに、実体表記ではないドイツ語のウムラウトを受け取りたいと考えています。

このドイツのサイトでは、10 進表記が示されています。でも意味は同じです。

では、エンコーディングにウムラウトの送信方法を伝えるにはどうすればよいでしょうか?

前もって感謝します!

//編集: ビジネス パートナーは、エンティティ表記でウムラウトを受け取ることを確認しました ({)

//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

私はそれrequestXNodeインスタンスであると推測しており、最終的なエンコーディングがどうなるかを知ることができないため、ASCII 範囲外のほとんどの文字をエンコードすることで、そのToString方法がエンコーディングの問題を回避しようとしていると推測しています。

エンコードをより適切に制御するには、ストリームで 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 に答える