Delphi PAChar的如何转成UTF-8的?
有如下定义:PLUGIN_NAME: PAChar = 'MoreTool';
需要转成UTF-8才能加到QT的菜单中,中文不乱码啊。{:301_974:}
其实可以调用一个外部的转换程序来解决 本帖最后由 lihongzhang 于 2023-8-7 22:55 编辑
只不过转换程序要和你的软件一起打包 var PLUGIN_NAME: PAnsiChar := 'MoreTool';
var u : UTF8String := PLUGIN_NAME;
这样不行? freecat 发表于 2023-8-8 01:15
var PLUGIN_NAME: PAnsiChar := 'MoreTool';
var u : UTF8String := PLUGIN_NAME;
这样不行?
明测试,睡觉中,梦游出菜看下。 freecat 发表于 2023-8-8 01:15
var PLUGIN_NAME: PAnsiChar := 'MoreTool';
var u : UTF8String := PLUGIN_NAME;
这样不行?
@freecat报错啊,老兄。 本帖最后由 塞北的雪 于 2023-8-8 09:46 编辑
ChatGPT:
在Delphi中,PAChar类型是一个指向字符数组的指针,通常用来表示以null结尾的字符串。要将PAChar类型的字符串转换为UTF-8编码格式,可以使用Delphi中的字符串转换函数和编码库。以下是一种示例方法:
引入编码库:
usesSystem.SysUtils, System.IOUtils, System.Classes, System.Encoding;
声明一个函数来将PAChar转换为UTF-8字符串:
function ConvertPCharToUTF8(p: PAnsiChar): UTF8String;
var
str: AnsiString;
begin
// 将PAnsiChar类型的字符串转换为AnsiString类型的字符串
str := p;
// 将AnsiString类型的字符串转换为UTF8String类型的字符串
Result := TEncoding.UTF8.GetString(TEncoding.Default.GetBytes(str));
end;
使用该函数将PAChar类型的字符串转换为UTF-8字符串:
var
p: PAnsiChar;
utf8Str: UTF8String;
begin
p := '你好'; // 假设p指向PAChar类型的字符串,这里是一个简单的例子
utf8Str := ConvertPCharToUTF8(p);
// 输出转换后的UTF-8字符串
ShowMessage(utf8Str);
end;
在以上示例中,ConvertPCharToUTF8函数首先将PAnsiChar类型的字符串转换为AnsiString类型的字符串,然后使用TEncoding.Default.GetBytes将AnsiString类型的字符串转换为字节数组,接着使用TEncoding.UTF8.GetString将字节数组转换为UTF8String类型的字符串。
请注意,该示例假设原始字符串已经是ANSI编码的。如果原始字符串是Unicode编码(如UTF-16),则需要使用相关的功能来进行适当的转换。 塞北的雪 发表于 2023-8-8 09:44
ChatGPT:
在Delphi中,PAChar类型是一个指向字符数组的指针,通常用来表示以null结尾的字符串。要将PACh ...
报错,机器人先生。{:301_971:} 啥错误啊?贴出来,我去骂AI 你那句const注了呀。。。。
const
马上就var?
页:
[1]