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

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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵