VC下实现fopen支持中文的方法
来源:爱站网时间:2019-08-07编辑:网友分享
vc fopen函数的第一个参数是const char*,遇到中文文件名时很难处理,如果中文是utf8编码,我们也可以用以下代码将其转换为Unicode,然后用wfopen函数打开文件,下面一起跟着爱站技术频道小编来了解吧!
vc fopen函数的第一个参数是const char*,遇到中文文件名时很难处理,如果中文是utf8编码,我们也可以用以下代码将其转换为Unicode,然后用wfopen函数打开文件,下面一起跟着爱站技术频道小编来了解吧!
代码如下:
bool UTF8ToUnicode(const char* UTF8, wchar_t* strUnicode)
{
DWORD dwUnicodeLen; //转换后Unicode的长度
TCHAR *pwText; //保存Unicode的指针
// wchar_t* strUnicode; //返回值
//获得转换后的长度,并分配内存
dwUnicodeLen = MultiByteToWideChar(CP_UTF8,0,UTF8,-1,NULL,0);
pwText = new TCHAR[dwUnicodeLen];
if (!pwText)
{
return false;
}
//转为Unicode
MultiByteToWideChar(CP_UTF8,0,UTF8,-1,pwText,dwUnicodeLen);
//转为CString
wcscpy(strUnicode, pwText);
//清除内存
delete []pwText;
return true;
}
这个函数的用法如下:
wchar_t strUnicode[260]; UTF8ToUnicode(streamName, strUnicode); FILE* fid = _wfopen(strUnicode, L"rb"); // FILE* fid = fopen(streamName, "rb");//此为原来的方法,遇到中文不能正确打开
上述是关于VC下实现fopen支持中文的方法,相信大家都了解了,其实很多的功能还不完善,如参数结构码长度设置不灵活,读者可根据自身需要进一步完善!
