有一个 Delphi 2007 应用程序通过 RemObjects 提供 WebService。我现在想使用这个 WebService 将一个 UTF-8 字符串传递给这个应用程序。现在有两种字符串类型可以在 Delphi2007 中使用:Utf8String 和 WideString。(Utf8String 在 Delphi 2007 中等于 String - AnsiString) 我已经尝试过两者,但只有 Utf8String 才有效。使用 Utf8String 是正确的还是我错过了其他东西?
问问题
587 次
1 回答
3
WideString
在所有 Delphi 版本中都以 UTF-16 编码。它是 COM 的包装器BSTR
。您根本无法将 UTF-8 内容存储在WideString
.
在 Unicode 之前的 Delphi 中保存 UTF-8 字符串的数据类型是UTF8String
,它本质上只是一个AnsiString
. 它是这样定义的:
type
UTF8String = type string;
在 Unicode 之前的 Delphi 中,string
is 是AnsiString
一个 8 位字符元素的数组。正是保存 UTF-8 有效负载所需要的。
在后 unicode Delphi 中,UTF8String
仍然是AnsiString
,但这次带有代码页信息。
type
UTF8String = type AnsiString(65001);
因此,在所有情况下,您都使用UTF8String
UTF-8 编码的字符串来保存。
于 2013-09-19T08:02:50.700 回答