白雪公主的后妈 2023-03-14 12:30 采纳率: 26.3%
浏览 89
已结题

mfc中读取txt中文乱码

mfc中通过Edit Control进行显示txt文本,里边有中文的,乱码,如何解决。

img


```c++
void JBXX::OnBnClickedButton1()//读取
{
    // TODO: 在此添加控件通知处理程序代码
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*");
    CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
    if (fileDlg.DoModal() == IDOK) {
        CString strFilePath = fileDlg.GetPathName();
        SetDlgItemText(IDC_EDIT_TXT, strFilePath);

        //CFile  CStdioFile
        CStdioFile sourceFile;
        CFileException ex;
        if (!sourceFile.Open(strFilePath, CFile::modeRead, &ex)) {
            TCHAR szError[1024];
            ex.GetErrorMessage(szError, 1024);
            MessageBox(szError, _T("打开文件"));
            return;
        }

        CString buf;
        while (sourceFile.ReadString(buf)) {
            m_textzhi = m_textzhi + buf + _T("\r\n");
        }

        sourceFile.Close();
        UpdateData(false); // 将变量m_edit,更新到控件中。
    }
}


void JBXX::OnBnClickedButton2()//另存为
{
    // TODO: 在此添加控件通知处理程序代码
    TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*");
    CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);

    CString strFilePath;
    if (fileDlg.DoModal() == IDOK) {
        strFilePath = fileDlg.GetPathName();
    }

    CStdioFile dstFile;
    CFileException ex;
    if (!dstFile.Open(strFilePath, CFile::modeCreate | CFile::modeWrite, &ex)) {
        TCHAR szError[1024];
        ex.GetErrorMessage(szError, 1024);
        MessageBox(szError, _T("打开目标文件"));
        return;
    }

    TCHAR buff[4096];
    int lineCount = m_text.GetLineCount(); // 获取文本框中文本的 行数
    for (int i = 0; i < lineCount; i++) {
        memset(buff, 0, 4096);

        int nRead = m_text.GetLine(i, buff, 4096);
        if (nRead == 0) {
            dstFile.WriteString(_T("\n"));
        }
        else {
            wcscat_s(buff, _T("\n"));
            dstFile.WriteString(buff);
        }
    }

    dstFile.Close();
}



展开全部

  • 写回答

5条回答 默认 最新

  • 四海一叶秋 2023-03-14 12:43
    关注

    你的项目是多字节字符集?然后txt是utf8编码?把txt另存为ansi编码。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月14日
  • 修改了问题 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部