有关MFC读取txt文档,而后在控件编辑框中显示的有关问题

有关MFC读取txt文档,而后在控件编辑框中显示的问题
读取txt文档中得文件,而后将文件在MFC界面上的Scintilla.dll控件编辑框中显示出来
代码如下:
filename=dlg.GetFileName();
CStdioFile stdFile;
if(!stdFile.Open(filename, CFile::modeRead | CFile::typeBinary))
{
AfxMessageBox(L"打开文件错误");
return;
}
CString strLine;
while(stdFile.ReadString(strLine))
{
text=text+strLine;
}
text=text+_T("\r\n");
stdFile.Close();
m_scintillaEditor.SetWindowText( text ); //m_scintillaEditor为定义的Scintilla.dll控件的变量

问题如下:
1、若将txt中得内容以二进制typeBinary的方式读取,则在显示到控件编辑框后发现总是缺失文本内容的最后一位数字或字母,若txt文档末尾加回车或空格的话则显示正常。
2、若将txt中得内容以typeText的方式读取,则能够读到全部的文本内容,但在控件编辑框中只显示文本内容的第一个字母。
请问如何解决?

------解决方案--------------------
先读前3个字节,如果是ff fe,是utf16 little格式的,如果是fe ff,是utf16 big格式的,如果是ef bb bf是utf8格式的,否则是ansi格式的。

将所有的文本都读入内存,如果不是utf16格式的,要转换成utf16 little格式的。如果有前面的bom头,去掉bom头再转换

然后从前往后找\r和\n,遇到\r丢弃,遇到\n表示这是一个完整行。

分割完所有的行之后,再显示到界面中。