C++ 正在尝试测试unicode文件名检索/与UTF8-UTF16的转换

C++ 正在尝试测试unicode文件名检索/与UTF8-UTF16的转换,c++,unicode,C++,Unicode,我已经看了很多WideCharToMultiByte等的例子。这个问题更多的是关于测试 我下载了另一套语言,中文,简体中文到我的机器上。然后,我使用虚拟键盘在C:\上创建了一个目录,路径中有一些汉字,并在目录中放置了一个文件 我试图通过使用我的路径测试wfopen来查看是否获得了正确的文件名。我在另一个位置也有相同的文件用于测试: //setlocale(LC_ALL, "zh-CN"); //setlocale(LC_ALL, "Chinese_China.936"); setlo

我已经看了很多WideCharToMultiByte等的例子。这个问题更多的是关于测试

我下载了另一套语言,中文,简体中文到我的机器上。然后,我使用虚拟键盘在C:\上创建了一个目录,路径中有一些汉字,并在目录中放置了一个文件

我试图通过使用我的路径测试wfopen来查看是否获得了正确的文件名。我在另一个位置也有相同的文件用于测试:

  //setlocale(LC_ALL, "zh-CN");
  //setlocale(LC_ALL, "Chinese_China.936");
  setlocale(LC_ALL, "");
  wchar_t* outfilename = L"C:\\特殊他\\和阿涛和润\\bracket3holes.sat";
  //wchar_t* outfilename = L"C:\\heather\\bracket3holes.sat";
  wchar_t w[] = L"r";
  FILE* foo = _wfopen(outfilename, w);
首先,我尝试不设置语言环境,然后尝试将语言环境设置为我下载的语言(因此是路径语言)的各种组合。 _wfopen在C:\heather路径上运行良好,但总是返回带有unicode路径的空指针

我错过了什么?如有任何见解,将不胜感激。注意:我的代码必须可编译回vc9

---根据反馈,我将文件保存为带有BOM的UTF-8,在wchar__t声明之前添加了const,现在在调试器中我确实看到了正确的字符串,并且文件指针不再为null


谢谢你的帮助。我仍在努力解决这个问题,我们正在尝试从const char*转换为unicode友好型。

我认为在这样的源文件中放置外来字符会有问题。您在编辑器中看到的不一定是正在编译的内容。将字符串文本分配给非常量指针是desaster的一个诀窍。别从那开始。也就是说,请提供一个完整的示例,包括(!)源文件和编译器命令行的精确编码。仅供参考:现代MS Windows文件系统使用UTF-16作为文件编码,这意味着您可以使用任何Unicode文件名(当然,正确编码),而不考虑语言环境。换句话说,错误可能出现在您没有显示的地方。首先确保字符串实际包含文本
C:\\特殊他\\和阿涛和润\\括号3孔。sat
。将源文件编码为带BOM的UTF-8或UTF-16。在调试器中检查该字符串。C++标准不需要支持源代码中的非ASCII字符。谢谢,并指出我的正确方向。要学的东西很多。。。