实现fopen支持中文的方法
投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-07-07 我要评论
这篇文章主要介绍了VC下实现fopen支持中文的方法,需要的朋友可以参考下VC的fopen函数第一个参数是const char*,一旦遇到中文文件名就难以应付了,如果中文是UTF8编码的话,我们还可以用下列代码将其转换为UNICODE,然后用_wfopen函数打开文件。
代码如下:
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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;
}
|
这个函数的用法如下:
?| 1 2 3 4 |
wchar_t
strUnicode[260];
UTF8ToUnicode(streamName,
strUnicode);
FILE*
fid = _wfopen(strUnicode, L"rb");
//
FILE* fid = fopen(streamName, "rb");//此为原来的方法,遇到中文不能正确打开
|
上述函数仍有不够完善之处,如参数strUnicode的长度不能灵活设置,读者可根据自身需求进一步加以完善!
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
