请教为什么读取的文本文件都跟着乱码
我使用的是VC2005,项目属性页里,字符集:使用 Unicode 字符集原来为多字符集时,一切正常,改成Unicode 字符集后就这样了,我怎么改也不行了
请高手帮忙...
//读取文本文件
CString CHtmlCodeFactory::ReadTextFile(CString fileName)
{
CFile m_File( fileName, CFile::modeNoTruncate | CFile::modeReadWrite);
TCHAR *fileContent=new TCHAR[m_File.GetLength()];
m_File.Read(fileContent, m_File.GetLength());
fileContent[m_File.GetLength()] = '\0';
return fileContent;
}
结尾乱码为:文字췍췍췍췍췍췍췍췍
经过下面这样修改,还是一样,只是乱码的样子不一样了!!!
结尾乱码为:文字??????????
CString CHtmlCodeFactory::ReadTextFile(CString fileName)
{
CFile m_File( fileName, CFile::modeNoTruncate | CFile::modeReadWrite);
int iLength = m_File.GetLength();
TCHAR *fileContent=new TCHAR[iLength];
m_File.Read(fileContent, m_File.GetLength());
char * p = new char[iLength+1];
WideCharToMultiByte( CP_ACP, 0, fileContent, -1, p, iLength, NULL, NULL );
p[iLength+1] = '\0'; return CString(p);
}
我使用的是VC2005,项目属性页里,字符集:使用 Unicode 字符集原来为多字符集时,一切正常,改成Unicode 字符集后就这样了,我怎么改也不行了
请高手帮忙...
//读取文本文件
CString CHtmlCodeFactory::ReadTextFile(CString fileName)
{
CFile m_File( fileName, CFile::modeNoTruncate | CFile::modeReadWrite);
TCHAR *fileContent=new TCHAR[m_File.GetLength()];
m_File.Read(fileContent, m_File.GetLength());
fileContent[m_File.GetLength()] = '\0';
return fileContent;
}
结尾乱码为:文字췍췍췍췍췍췍췍췍
经过下面这样修改,还是一样,只是乱码的样子不一样了!!!
结尾乱码为:文字??????????
CString CHtmlCodeFactory::ReadTextFile(CString fileName)
{
CFile m_File( fileName, CFile::modeNoTruncate | CFile::modeReadWrite);
int iLength = m_File.GetLength();
TCHAR *fileContent=new TCHAR[iLength];
m_File.Read(fileContent, m_File.GetLength());
char * p = new char[iLength+1];
WideCharToMultiByte( CP_ACP, 0, fileContent, -1, p, iLength, NULL, NULL );
p[iLength+1] = '\0'; return CString(p);
}
解决方案 »
- 用vc操作word2003为什么在debug版本下CreateDispatch总失败,而在release版本下面运行正常?
- HOOK RECV以后
- 关于一个存储图形的问题
- 一个线程建了多个窗口,那么是这个线程有一个消息队列,还是每个窗口都有一个消息队列?
- 求助 关于CWebGrab
- 不用电脑猜猜结果是多少
- 如何使CListCtrl控件中的标题更换背景颜色
- 制作DLL文件中遇到的问题,帮帮我,高分相赠!
- 如何获取access库里某一字段的内容呢?
- 控件关联问题!
- recv返回-1,但错误码是0,我晕,这是什么现象???
- 两屏显示,如何得到副显示器的分辨率??CDialog上加载了一个MediaPlay控件,想在副显示器上播放视频。
CString CHtmlCodeFactory::ReadTextFile(CString fileName)
{
CFile m_File(fileName, CFile::modeNoTruncate|CFile::modeReadWrite);
char *fileContent=new char[m_File.GetLength()+0];
m_File.Read(fileContent, m_File.GetLength());
fileContent[m_File.GetLength()] = '\0';
//将fileContent由ascii转unicode编码 return unicode_fileContent;
}
{
CFile m_File( fileName, CFile::modeNoTruncate ¦ CFile::modeReadWrite);
int iLength = m_File.GetLength();
TCHAR *fileContent=new TCHAR[iLength];
m_File.Read(fileContent, m_File.GetLength());
fileContent[iLength/2] = '\0';//修改这句后,正常
return CString(p);
}
总结一下,具体我还是不明白,是不是从文件中读取完,已经不是宽字符了
{
CFile m_File( fileName, CFile::modeNoTruncate ¦ CFile::modeReadWrite);
int iLength = m_File.GetLength();
TCHAR *fileContent=new TCHAR[iLength];
m_File.Read(fileContent, m_File.GetLength());
fileContent[iLength/2] = '\0';//修改这句后,正常
return CString(p);
} --给分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!