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