吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 616|回复: 9
收起左侧

[求助] Delphi PAChar的如何转成UTF-8的?

[复制链接]
冥界3大法王 发表于 2023-8-7 21:40
有如下定义:   

  PLUGIN_NAME: PAChar = 'MoreTool';
需要转成UTF-8才能加到QT的菜单中,中文不乱码啊。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cjcmxc + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lihongzhang 发表于 2023-8-7 22:52
其实可以调用一个外部的转换程序来解决
lihongzhang 发表于 2023-8-7 22:53
本帖最后由 lihongzhang 于 2023-8-7 22:55 编辑

只不过转换程序要和你的软件一起打包
freecat 发表于 2023-8-8 01:15
    var PLUGIN_NAME: PAnsiChar := 'MoreTool';
    var u : UTF8String := PLUGIN_NAME;
这样不行?
 楼主| 冥界3大法王 发表于 2023-8-8 04:53
freecat 发表于 2023-8-8 01:15
var PLUGIN_NAME: PAnsiChar := 'MoreTool';
    var u : UTF8String := PLUGIN_NAME;
这样不行?

明测试,睡觉中,梦游出菜看下。
 楼主| 冥界3大法王 发表于 2023-8-8 08:07
freecat 发表于 2023-8-8 01:15
var PLUGIN_NAME: PAnsiChar := 'MoreTool';
    var u : UTF8String := PLUGIN_NAME;
这样不行?

@freecat image.png 报错啊,老兄。
塞北的雪 发表于 2023-8-8 09:44
本帖最后由 塞北的雪 于 2023-8-8 09:46 编辑

ChatGPT:

在Delphi中,PAChar类型是一个指向字符数组的指针,通常用来表示以null结尾的字符串。要将PAChar类型的字符串转换为UTF-8编码格式,可以使用Delphi中的字符串转换函数和编码库。以下是一种示例方法:

引入编码库:
[Delphi] 纯文本查看 复制代码
uses  System.SysUtils, System.IOUtils, System.Classes, System.Encoding;

声明一个函数来将PAChar转换为UTF-8字符串:
[Delphi] 纯文本查看 复制代码
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字符串:
[Delphi] 纯文本查看 复制代码
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),则需要使用相关的功能来进行适当的转换。
 楼主| 冥界3大法王 发表于 2023-8-8 11:31
塞北的雪 发表于 2023-8-8 09:44
ChatGPT:

在Delphi中,PAChar类型是一个指向字符数组的指针,通常用来表示以null结尾的字符串。要将PACh ...

报错,机器人先生。
塞北的雪 发表于 2023-8-8 19:34
啥错误啊?贴出来,我去骂AI
freecat 发表于 2023-8-9 00:51
你那句const注了呀。。。。
const
马上就var?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表