1 / 9
文档名称:

VC 编程ANSI环境下读写Unicode文件和将CStdioFile类扩展,读取UNICODE文本文件.pdf

格式:pdf   页数:9页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VC 编程ANSI环境下读写Unicode文件和将CStdioFile类扩展,读取UNICODE文本文件.pdf

上传人:紫岑旖旎 2012/9/16 文件大小:0 KB

下载得到文件列表

VC 编程ANSI环境下读写Unicode文件和将CStdioFile类扩展,读取UNICODE文本文件.pdf

文档介绍

文档介绍:IT-Homer 专栏
成功是优点的发挥,失败是缺点的积累! 不为失败找理由,只为成功找
方法……
VC 编程ANSI环境下读写Unicode文件和将CStdioFile类扩展,读取UNICODE文本文件
分类: C/C++/C# 2009-12-16 17:09 1507人阅读评论(0) 收藏举报
VC 编程ANSI环境下读写Unicode文件
没有注意到文件编码的不同会产生这么多的问题,在动手以前查询了很多资料,在本博客中收藏了不少先辈的成
果,在这里一并表示致敬!
       关于ANSI和Unicode编码的原理在这里也不说了,主要讲下如何读写!
       首先确定你的工程是采用的是什么编码环境,默认是ANSI,不同的字符集读写文件的差别也比较大,我这里
只在ANSI环境下做的,下一步在探索在Unicode环境下如何读写!(原先这个没搞懂,读了不少代码发现自己试验都
是有误的)。
       在ANSI的字符集下,CString等都是单字节版本的,所以一定要注意。而多要读取的Unicode文件却是双字节
的,这里就要转换了,当然在ANSI字符集下,还是用二进制的方式打开Unicode文件,自己判断是否是换行,在转化
成ANSI编码。而在写Unicode的时候,先将所字符转化成Unicode编码再写入,而且在写文件之前一定要加上Unicode
文件的标识。
下面是读
   CFile mFile(UnicodefilePath,CFile::modeRead);
   byte head[2];
   (head,2); 
   if((head[0]==0xff&&head[1]==0xfe)||(head[0]==0xfe&&head[1]==0xff)   )
   {
    //AfxMessageBox(_T("File is Unicode!"));
    isUnicode = true;
   }
if(isUnicode) (2,CFile::begin); //0xfffe
wchar_t wch;
wchar_t wstr[300];
CString strvalue ;
hile(((char *)&wch,2)>0)
{
   if(wch==0x000D)  //by line
   {
    //chang to ansi
    int nLen = i;
    char *buf = new char[2*nLen];
    WideCharToMultiByte(CP_ACP, 0, wstr, nLen, buf, 2*nLen, NULL, NULL);
    buf[2*nLen-1] = 0;   //some assertion failed,这个比较重要,小问题可以折腾人啊
   strvalue = buf;
    (2,CFile::current);  //跳过行开头符号
    i=0;
}
   else
   {
    wstr[i++] = wch;
   }
}
//下面是写
C