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

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 20:43
    关注

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

    img

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题