实现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的长度不能灵活设置,读者可根据自身需求进一步加以完善!
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: GIT处理超大大文件时拉取报错
- 下一篇: Qt、Vc下用fopen打开中文名字的文件