鱼非愚而为瑜 2024-04-07 16:38 采纳率: 50%
浏览 7
已结题

MFC中char* 转化为 CString 中文出现乱码,多种方法未能解决?

错误地方:

img

描述:
预想是从一个txt文件里读取数据到mfc里规定区域进行展示,所以用上了结构体指针读取。

//错误点坐标
    struct point
    {
        int x;
        int y;
    };


    //错误点结构体
    struct Falses
    {
        char Typename[Size];
        struct point Falsepoint;
        char Falsedis[MAX];
        Falses* next;
    };

尝试解决方案:
在网上查询了三种解决方案,仍无法解决:A2T()还有先转string 再转CString 两种方法已经删除。

//先将char* 类型转化为CString类型
            
            //统计字节长度
            int charlen = strlen(pfront->Typename);
            //统计字符多少
            int len = MultiByteToWideChar(CP_ACP, 0, pfront->Typename, charlen, NULL, 0);

            //根据宽字符数量申请宽字符数组
            TCHAR* buf = new TCHAR[len + 1];

            //多字节编码转化为宽字节编码
            MultiByteToWideChar(CP_ACP, 0, pfront->Typename, charlen, buf, len);
            

            //添加字符串结尾
            buf[len] = '\0';
            //转化为CString 类型

            //char *type_name = pfront->Typename;

            //std::string type_s(type_name);

            CString Typename;
            //Typename.Format(_T("%s"),type_s.c_str());
            Typename.Append(buf);

大家帮帮忙(哭死了)。

  • 写回答

2条回答 默认 最新

  • 关注

    大概是用GBK解读utf8了. 看看你txt文件的编码格式, 如果是utf8换成GBK试试.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳