VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1037|回复: 3

[求助] ReadString读取Unicode TXT文本错误

[复制链接]
56_avatar_middle
在线会员 发表于 2016-1-29 16:47:33 | 显示全部楼层 |阅读模式
3驿站币
hi 各位
   可以新建一个Unicode TXT文本1234.txt. 然后模拟执行下!
  如果将1234.txt 修改为ANSI 格式,读取就没问题! 请问如何解决啊?
  编译环境VS2008.

void CRstrTestDlg::OnBnClickedButton1()
{
    char* old_locale = _strdup( setlocale(LC_CTYPE,NULL) );  
        setlocale( LC_CTYPE, "chs" );

        CStdioFile sf;
        CString str;
        CString sString=_T("123嘿嘿");
        int iRet=0;
        if(sf.Open(_T("C:\\XHtmlTree\\1234.txt"),CFile::modeRead ))
        {
                while (sf.ReadString(str))
                {
                        iRet = str.Find(sString);  //unicode 文本读取直接报错, ANSI 文本逐行读取OK

                        if (iRet >0)
                        {
                                sf.Close();
                                AfxMessageBox(_T("find"));
                                return ;
                        }
                }
                sf.Close();
                return ;
        }else
                sf.Close();
       

        setlocale( LC_CTYPE, old_locale );
        free( old_locale );
}





上一篇:WIN7 CREATEPROCESSASUSER 错误1314
下一篇:C++:DLL重复加载问题
51_avatar_middle
online_admins 发表于 2016-1-30 10:07:49 | 显示全部楼层
本身MFC自带的 CStdioFile 类在 Unicode 的工程环境下去读取 Unicode编码的记事本内容时确实报错,刚刚已经试过了,有这个问题,可能得修改点什么,也懒得找了,直接网上找到了一个开源类,很好用,简单的修改了下,移植到了 vs2010 的 MFC 工程中,工程代码如下:
ReadString读取Unicode TXT文本错误 MFCTest.zip (156.86 KB, 下载次数: 7)
22_avatar_middle
在线会员 发表于 2016-1-30 12:41:59 | 显示全部楼层
编码是个比较复杂的问题,所以提问时还是把要读取的文件传上来比较好。
56_avatar_middle
ico_lz  楼主| 发表于 2016-2-1 14:17:38 | 显示全部楼层
Syc 发表于 2016-1-30 10:07
本身MFC自带的 CStdioFile 类在 Unicode 的工程环境下去读取 Unicode编码的记事本内容时确实报错,刚刚已经 ...

老大你太伟大了,我在网上搜了好久都没找到方法,
我太崇拜你了!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-27 22:24

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表