CStdioFile类打开文件,用TextOut输出时乱码
写onFileOpen函数的时候,打开文件后,用CDC::TextOut函数输出到用户区窗口,但是遇到了一个问题,就是输出中文时出现乱码...于是,我开始了大量的搜索,终于,这个问题被解决了...
源代码如下:
void ctextradview::on fileopen()
{
todo:在此添加命令处理程序代码
CString fpath name;
static tchar based _ code SZ filter[]= _ t(" text document(*。txt) | *。txt | "
_ t("所有文件(*。*) | *.* |");
CFileDialog openDlg(TRUE,NULL,NULL,OFN _ HIDEREADONLY | OFN _ overwrite promp,szFilter,NULL,0,TRUE);
if(openDlg。DoModal()= = IDOK)
{
fpath name = open DLG。get pathname();
CStdioFile of file(fpath name,CFile::modeRead);
CString of str;
CClientDC dc(这个);
CFont字体;
font.createpointfont (200,_ t("微软雅黑"),NULL);
dc。select object(& font);
text metric TM;
dc。GetTextMetrics(& TM);
c point pt;
pt = 0;
while(of file。ReadString(ofstr))
{
DC。TextOut(pt.x,pt.y,of str);
pt . y = pt . y+TM . TM height;
}
}
} [/br]如果像这样直接编译运行,输出的会是中文乱码。解决方法如下:
打开项目属性,修改项目属性中的“字符集”即可解决此问题,但同时要更改“公共语言运行库支持”。否则,编译时会报告错误...
但这仍然只显示ANSI格式的文本,其他格式的文本都会出现不同程度的乱码...我该怎么办?有高手提供了一个解决方案,就是把其他编码格式转换成ANSI格式,这样就可以了。
0条评论