3

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

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

4

1 回答 1

1

我认为你需要在 Delphi 中对所有 WideString 进行标记。

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

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

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

于 2012-04-19T16:05:35.263 回答