我创建了一个将由Delphi 7类使用的WCF应用程序。 AFAIK,C#string
类型为UTF16
,Delphi的7 string
类型为Ansi
。
问题是:由于C#和Delphi字符串类型不同,我应该用bytes[]
而不是string
声明我的所有函数吗?我可以在我的方法上使用strings
来解决问题吗?
答案 0 :(得分:1)
我认为你需要在Delphi中对所有WideString进行十分转换。
您说您制作了.NET WCF服务并且Delphi 7客户端会使用它,但客户端是否也在您的控制之下?你的问题似乎暗示是这样的。我回答假设是真的。
即使.NET端的[OperationContract]具有byte []类型参数,所有默认的合同线序列化器(SOAP,JASON等等)都将使用.NET XML格式,这是(AFAK)所有UTF-16。
因此,虽然您可以将参数放入显式字节数组中,但消息有效负载将全部为UTF-16 XML。