gpt4 book ai didi

string - 将 UTF-8 字符串存储在 UnicodeString 中

转载 作者:行者123 更新时间:2023-12-03 14:43:07 24 4
gpt4 key购买 nike

在 Delphi 2007 中,您可以将 UTF-8 字符串存储在 WideString 中,然后将其传递给 Win32 函数,例如

var
UnicodeStr: WideString;
UTF8Str: WideString;
begin
UnicodeStr:='some unicode text';
UTF8Str:=UTF8Encode(UnicodeStr);
Windows.SomeFunction(PWideChar(UTF8Str), ...)
end;

Delphi 2007 不会干扰 UTF8Str 的内容,即它保留为存储在 WideString 中的 UTF-8 编码字符串。

但在 Delphi 2010 中,我正在努力寻找一种方法来做同样的事情,即将 UTF-8 编码的字符串存储在 WideString 中,而不自动从 UTF-8 转换。我无法传递指向 UTF-8 字符串(或 RawByteString)的指针,例如以下显然行不通:

var
UnicodeStr: WideString;
UTF8Str: UTF8String;
begin
UnicodeStr:='some unicode text';
UTF8Str:=UTF8Encode(UnicodeStr);
Windows.SomeFunction(PWideChar(UTF8Str), ...)
end;

最佳答案

您的原始 Delphi 2007 代码使用 ANSI 代码页将 UTF-8 字符串转换为宽字符串。要在 Delphi 2010 中执行相同的操作,您应该使用 SetCodePage 并将 Convert 参数设置为 false。

var
UnicodeStr: UnicodeString;
UTF8Str: RawByteString;
begin
UTF8Str := UTF8Encode('some unicode text');
SetCodePage(UTF8Str, 0, False);
UnicodeStr := UTF8Str;
Windows.SomeFunction(PWideChar(UnicodeStr), ...)

关于string - 将 UTF-8 字符串存储在 UnicodeString 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com