WCF和Delphi - 我应该使用bytes []还是字符串?

时间:2012-04-19 13:42:44

标签: c# wcf delphi unicode

我创建了一个将由Delphi 7类使用的WCF应用程序。 AFAIK,C#string类型为UTF16,Delphi的7 string类型为Ansi

问题是:由于C#和Delphi字符串类型不同,我应该用bytes[]而不是string声明我的所有函数吗?我可以在我的方法上使用strings来解决问题吗?

1 个答案:

答案 0 :(得分:1)

我认为你需要在Delphi中对所有WideString进行十分转换。

您说您制作了.NET WCF服务并且Delphi 7客户端会使用它,但客户端是否也在您的控制之下?你的问题似乎暗示是这样的。我回答假设是真的。

即使.NET端的[OperationContract]具有byte []类型参数,所有默认的合同线序列化器(SOAP,JASON等等)都将使用.NET XML格式,这是(AFAK)所有UTF-16。

因此,虽然您可以将参数放入显式字节数组中,但消息有效负载将全部为UTF-16 XML。