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

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日

悬赏问题

  • ¥15 Multisim仿真设计地铁到站提醒电路
  • ¥15 怎么用一个500W电源给5台60W的电脑供电
  • ¥15 请推荐一个轻量级规则引擎,配合流程引擎使用,规则引擎负责判断出符合规则的流程引擎模板id
  • ¥15 Excel表只有年月怎么计算年龄
  • ¥50 资源管理器无法使用且一直崩溃重启
  • ¥15 用sql语句完成下列问题
  • ¥50 yalmip+Gurobi 求解线性规划
  • ¥15 微信开发者工具/云函数/数据库
  • ¥15 Torch not compiled with CUDA enabled
  • ¥15 三种节点编号优化算法比较