如何在 Windows 上打开带有 UNICODE 文件名的文件?

zen*_*100 5 unicode fopen

有一个第三个库只接受 char* 文件名,例如3rdlib_func_name(char* file_name)。当我提供中文或日文文件名时,一切都会出错。

有什么办法让这个库打开 UNICODE 文件名吗?该程序在Windows上运行。

感谢您的回复。

val*_*ldo 5

我们也有类似的问题。幸运的是,有一个解决方案,尽管有点棘手。

如果文件/目录已经存在 - 您可以使用该GetShortPathName功能。保证生成的“短”路径名不包含非拉丁字符。

  1. 调用GetShortPathNameW(unicode 版本)以获取“短”路径字符串。
  2. 将短路径转换为 ​​ANSI 字符串(使用WideCharToMultiByte)。
  3. 将生成的 ANSI 字符串提供给愚蠢的第 3 方库。

现在,如果文件/目录尚不存在 - 您可能无法获取其短路径名。在这种情况下,您应该首先创建它。