将UTF8字符串传递给RemObject(Delphi 2007)时使用的字符串类型 - Utf8String或WideString

时间:2013-09-19 07:20:28

标签: delphi delphi-2007 remobjects

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

1 个答案:

答案 0 :(得分:3)

在所有Delphi版本中,

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

在Unicode前Delphi中保存UTF-8字符串的数据类型为UTF8String,基本上只是AnsiString。它定义如下:

type
  UTF8String = type string;

在Unicode前Delphi中,stringAnsiString,是一个包含8位字符元素的数组。确切地说,保持UTF-8有效载荷需要什么。

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

type
  UTF8String = type AnsiString(65001);

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