Unicode _wfopen无法生成具有16位wchar\t字符串的正确文件名

Unicode _wfopen无法生成具有16位wchar\t字符串的正确文件名,unicode,mingw,utf-16,Unicode,Mingw,Utf 16,当我完全按照以下方式编写代码时: setlocale(LC_ALL,""); wchar_t myString2[] = { 0x0061, 0x2660, 0x2663, 0x2665, 0x2666, 0x0000 }; fd = _wfopen(myString2, L"w"); 或 结果不是我所期望的。预期:a♠♣♥♦, 但是探险家显示了一个小正方形,然后是4个小正方形。但是,当我在资源管理器中输入文件重命名,然后复制文件名时,它会正确插入到编辑器中。 当我输入一个显

当我完全按照以下方式编写代码时:

   setlocale(LC_ALL,"");
   wchar_t myString2[] = { 0x0061, 0x2660, 0x2663, 0x2665, 0x2666, 0x0000 };
   fd = _wfopen(myString2, L"w");

结果不是我所期望的。预期:a♠♣♥♦, 但是探险家显示了一个小正方形,然后是4个小正方形。但是,当我在资源管理器中输入文件重命名,然后复制文件名时,它会正确插入到编辑器中。 当我输入一个显示这些字符的文件名,或者说在编辑器中复制并粘贴汉字时,编辑器会在文件名中显示小方块。 使用-fexec charset=xxxx进行的实验甚至不能得到期望的结果。考虑到复制粘贴实验的结果,我猜一定发生了一些非常愚蠢的事情。如果这是真的,那么解决方案应该非常简单


系统:Win XP,Mingw 20120426,Ansi-C-因此不需要STLport。

这只是字体问题。显然,编辑器在为文件名中的glyph选择合适的字体方面更聪明。值得一提的是,在Windows 7上,Far(使用控制台)和Explorer(使用Segoe UI)都可以正确显示文件名:

但如前所述,数据是正确的;这只是一个显示问题

   fd = _wfopen(myString2, L"w, ccs=UTF-16");