C# UTF-8编码是否必须在web服务响应中明确定义?

C# UTF-8编码是否必须在web服务响应中明确定义?,c#,web-services,utf-8,asmx,C#,Web Services,Utf 8,Asmx,我支持一个基于.NET3.5的C#(.asmx)web服务。这是一个非常非常简单的服务,其中包括返回街道地址。提供该服务的应用程序的范围最近有所扩大,现在其背后的DB也拥有国际地址。这意味着可以存储拉丁外语字符(重音符号、umlauts等),并因此在web服务响应中返回 当我使用soapUI自动生成的请求在本地测试服务时,没有添加任何特殊的头或任何其他内部结构信息,我看到的这个元素与存储在数据库中的元素一模一样,带有重音标记: <CompositeStreet>140-146 RUE

我支持一个基于.NET3.5的C#(.asmx)web服务。这是一个非常非常简单的服务,其中包括返回街道地址。提供该服务的应用程序的范围最近有所扩大,现在其背后的DB也拥有国际地址。这意味着可以存储拉丁外语字符(重音符号、umlauts等),并因此在web服务响应中返回

当我使用soapUI自动生成的请求在本地测试服务时,没有添加任何特殊的头或任何其他内部结构信息,我看到的这个元素与存储在数据库中的元素一模一样,带有重音标记:

<CompositeStreet>140-146 RUE EUGÈNE DELACROIX</CompositeStreet>
以及serializable类,该类是VZBServiceResponse类型的一个属性,该属性以XML响应结束。您将看到的只是
[Serializable]
属性和返回元素顺序的设置

namespace Company.IT.Network.LocationStore.LS_Lib.BO
{
    using ...;

    [Serializable]
    public class Address
    {
        private string _compositeStreet;
        private string _buildingName;

        [XmlElement(Order = 0)]
        public string BuildingName
        {
            get { return _buildingName; }
            set { _buildingName = value; }
        }

        [XmlElement(Order = 1)]
        public string CompositeStreet
        {
            get { return _compositeStreet; }
            set { _compositeStreet = value; }
        }
    }
}
事实上没有比这更多的了。没有通过内存流格式化XML响应(我在一些文章中看到过),也没有通过序列化或反序列化方法进行特定处理


是否有建议对此进行改进,以保证向服务消费者提供外语字符,或者这真的取决于呼叫系统?谢谢您的指导

为什么不创建您自己的web服务客户端(“添加服务引用”),并亲自打电话给该服务,看看它是否返回正确的数据?谢谢@JohnSaunders-我可能最终会这样做,这只是在截止日期驱动下找到时间的问题,用更多的工作日做更少的事情。我希望我不必猜测soapUI的结果,希望有经验的人能够回答ASMXWeb服务是否默认为UTF-8编码的问题。在找到另外两篇与此主题相关的帖子后,经过深入阅读,我非常倾向于“是的,他们会的”,但我肯定会尽快按照你的建议去做。你是否意识到创建一个客户、致电服务并查看结果需要不到一个小时的时间?请参阅,但您不必创建服务,因为您已经有了一个服务。
namespace Company.IT.Network.LocationStore.LS_Services
{
    using . . .; 

   [WebService(Namespace = "Company.IT.Network.LocationStore.LS_Services.ClliRecordService")]
    public class ClliRecordService : System.Web.Services.WebService
    {
        public ClliRecordService() { }

        [WebMethod(Description = "Lengthy description")]
        public VZBServiceResponse ClliLookup_VzbSite(VZBServiceRequest sRequest)
        {
            VZBServiceResponse sResponse = new VZBServiceResponse(sRequest);
            return sResponse;
        }
}
namespace Company.IT.Network.LocationStore.LS_Lib.BO
{
    using ...;

    [Serializable]
    public class Address
    {
        private string _compositeStreet;
        private string _buildingName;

        [XmlElement(Order = 0)]
        public string BuildingName
        {
            get { return _buildingName; }
            set { _buildingName = value; }
        }

        [XmlElement(Order = 1)]
        public string CompositeStreet
        {
            get { return _compositeStreet; }
            set { _compositeStreet = value; }
        }
    }
}