I'm currently trying the Amazon Web Services (AWS) with .NET and of course I'm browsing the german catalog using the german locale. The strange thing is that strings containing german umlaut characters (like ä,ö,ü ...) arrived in .NET strings as '??'. I traced the protocols and found that AWS correctly states the use of UTF-8 in the Content-Type HTTP Header and the XML processing instruction also states UTF-8. The arrived response contains all umlaut characters correctly, so to me it looks like something is going wrong with the Encoding in the Deserialization step that maps the XML into .NET class members.

I found a solution that works. I'm using WSE-2.0 for the SOAP client and wrote a custom input filter that is very simple. I still believe it shouldn't be that way, although it works for me now.

public class EncodingFilter : SoapInputFilter
{
    public override void ProcessMessage(SoapEnvelope envelope)
    {
        envelope.Encoding = System.Text.Encoding.Unicode;
    }
}