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);
}

解决方案 »

  1.   

    把项目改成使用Unicode字符集。
      

  2.   

    环境:vs2005
    errno为22,即EINVAL.
      

  3.   

    我的意思是让你用Unicode的相关函数,例如FindFirstFileW等,不懂就算了。
      

  4.   


    编译链接时,若用VC++6.0要改一下链接参数的。具体可以在CSDN里google啦。此方法仅供参考,不敢保证能行。呵呵,怕楼主骂. :-)
      

  5.   

    ....
    大家没有遇到这种情况。
    宽字符的api函数我都用过,跟这没关系,关键是fopen打开文件并不是万能的,比如在英文环境下fopen打开中文的文件就不行,解决方式是使用_wfopen,因为参数是宽字符,所以没有什么问题了。
    结贴。