2

有一个 Delphi 2007 应用程序通过 RemObjects 提供 WebService。我现在想使用这个 WebService 将一个 UTF-8 字符串传递给这个应用程序。现在有两种字符串类型可以在 Delphi2007 中使用:Utf8String 和 WideString。(Utf8String 在 Delphi 2007 中等于 String - AnsiString) RemObjects - UTF8String 与 WideString 我已经尝试过两者,但只有 Utf8String 才有效。使用 Utf8String 是正确的还是我错过了其他东西?

4

1 回答 1

3

WideString在所有 Delphi 版本中都以 UTF-16 编码。它是 COM 的包装器BSTR。您根本无法将 UTF-8 内容存储在WideString.

在 Unicode 之前的 Delphi 中保存 UTF-8 字符串的数据类型是UTF8String,它本质上只是一个AnsiString. 它是这样定义的:

type
  UTF8String = type string;

在 Unicode 之前的 Delphi 中,stringis 是AnsiString一个 8 位字符元素的数组。正是保存 UTF-8 有效负载所需要的。

在后 unicode Delphi 中,UTF8String仍然是AnsiString,但这次带有代码页信息。

type
  UTF8String = type AnsiString(65001);

因此,在所有情况下,您都使用UTF8StringUTF-8 编码的字符串来保存。

于 2013-09-19T08:02:50.700 回答