有一个Delphi 2007应用程序,它通过RemObjects提供WebService。我现在想要使用此WebService将UTF-8字符串传递给此应用程序。现在我可以在Delphi2007中使用两种String类型:Utf8String和WideString。 (Utf8String在Delphi 2007中等于String - AnsiString) 我用两种方法都尝试过,但只有Utf8String才有效。使用Utf8String是正确的还是我错过了其他的东西?
答案 0 :(得分:3)
WideString
以UTF-16编码。它是COM BSTR
的包装器。您根本无法在WideString
中存储UTF-8内容。
在Unicode前Delphi中保存UTF-8字符串的数据类型为UTF8String
,基本上只是AnsiString
。它定义如下:
type
UTF8String = type string;
在Unicode前Delphi中,string
是AnsiString
,是一个包含8位字符元素的数组。确切地说,保持UTF-8有效载荷需要什么。
在后unicode Delphi中,UTF8String
仍然是AnsiString
,但这次是代码页信息。
type
UTF8String = type AnsiString(65001);
因此,在所有情况下,您都使用UTF8String
来保存UTF-8编码的字符串。