gpt4 book ai didi

string - 德尔福2010 : how do I convert a UTF8-encoded PAnsiChar to a UnicodeString?

转载 作者:行者123 更新时间:2023-12-03 18:33:52 24 4
gpt4 key购买 nike

情况:我有一个使用 UTF-8 作为其内部字符串格式的外部 DLL。接口(interface)函数都使用 PAnsiChar 来传递字符串。

我的应用程序的其余部分使用 Delphi 的原生 string类型;因为我使用的是 Delphi 2010,所以它会映射到 UnicodeString .

如何可靠地将那些 PAnsiChar 参数(指向 UTF-8 编码字符串)转换为 UnicodeString?

我有这个功能,我认为它工作得很好:

function PUTF8CharToString(Text: PAnsiChar): string;
var
UText: UTF8String;
begin
UText := UTF8String(Text);
Result := string(UText);
end;

...但是现在我遇到了结果字符串损坏的情况;当我将 PAnsiChar 保存到文件时,很好;但是当我使用上述函数转换后保存结果字符串时,它已损坏。

或者这是否应该正常工作,这是否表明其他一些内存(取消)分配问题?

编辑:我终于设法通过将转换后的字符串分配给局部变量字符串来摆脱内存损坏,而不是直接将其传递给另一个函数。

最佳答案

从系统:

函数 UTF8ToUnicodeString(const S: PAnsiChar): UnicodeString;重载;

UnicodeStr := System.Utf8ToUnicodeString(Text);

关于string - 德尔福2010 : how do I convert a UTF8-encoded PAnsiChar to a UnicodeString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4472233/

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