项目场景:在中读取igs文件时如果文件路径是带中文就无法读取
问题描述:
为经过修改时,进行监控会显示中文乱码
aFile = ::_wfopen (aFileNameW.ToWideString(),
aFileModeW.ToWideString());
原因分析:
经过调试测试发现是底层的TKernel库中的上图代码出现的问题,ToWideString()函数的问题,并没有转化成功。 初步认为是宽字节转化这个函数的问题解决方案:
提示:重写了这个函数,修改后如下
(此函数位于OSD_openfile.cxx中)
UINT nLen = MultiByteToWideChar(936,NULL,theName,-1,NULL,NULL);
WCHAR *wszBuffer = new WCHAR[nLen+1];
nLen = MultiByteToWideChar(936,NULL,theName,-1,wszBuffer,nLen);
wszBuffer[nLen] = 0;
//获取转为UTF8多字节后需要的缓冲区大小,创建多字节缓冲区
nLen = WideCharToMultiByte(CP_UTF8,NULL,wszBuffer,-1,NULL,NULL,NULL,NULL);
aFile = ::_wfopen (wszBuffer,
aFileModeW.ToWideString());
总结:使用了WideCharToMultiByte函数解决了问题,但是重新编译的时候会有一些报警