windows控制面板的区域与语言选项的高级中非unicode程序的语言选择 英语(美国),点确定,按照提示重启电脑,重启电脑后发现使用fopen(vc下)打不开中文路径的文件,这个问题怎么解决?
同样地,在中文环境下存在韩文文件fopen打不开韩文文件的情况请问这是不是所谓的国际化和本地化的问题,发现好多程序都有这个问题,这个应该怎么解决?
测试程序如下:
#include <stdio.h>
int main(int argc,char** argv)
{
char szFileName[MAX_PATH] = "f:\\photos\\_test003\\*.jpg";
WIN32_FIND_DATAA dt;
HANDLE hFile = FindFirstFileA(szFileName,&dt); for (;;)
{
char a[MAX_PATH] = "f:\\photos\\_test003\\";
nFormat = -1;
strcat(a,dt.cFileName);
if (fopen(a,"rb"))
{
printf("opened.\n");
}
else
{
printf("cannot open.\n");
}
if (!FindNextFileA(hFile,&dt))
{
break;
}
};
FindClose(hFile);
}
同样地,在中文环境下存在韩文文件fopen打不开韩文文件的情况请问这是不是所谓的国际化和本地化的问题,发现好多程序都有这个问题,这个应该怎么解决?
测试程序如下:
#include <stdio.h>
int main(int argc,char** argv)
{
char szFileName[MAX_PATH] = "f:\\photos\\_test003\\*.jpg";
WIN32_FIND_DATAA dt;
HANDLE hFile = FindFirstFileA(szFileName,&dt); for (;;)
{
char a[MAX_PATH] = "f:\\photos\\_test003\\";
nFormat = -1;
strcat(a,dt.cFileName);
if (fopen(a,"rb"))
{
printf("opened.\n");
}
else
{
printf("cannot open.\n");
}
if (!FindNextFileA(hFile,&dt))
{
break;
}
};
FindClose(hFile);
}
errno为22,即EINVAL.
编译链接时,若用VC++6.0要改一下链接参数的。具体可以在CSDN里google啦。此方法仅供参考,不敢保证能行。呵呵,怕楼主骂. :-)
大家没有遇到这种情况。
宽字符的api函数我都用过,跟这没关系,关键是fopen打开文件并不是万能的,比如在英文环境下fopen打开中文的文件就不行,解决方式是使用_wfopen,因为参数是宽字符,所以没有什么问题了。
结贴。