_wfopen没有使用16位wchar_t字符串产生正确的文件名

时间:2012-07-24 13:44:51

标签: unicode mingw utf-16

当我的代码完全像这样:

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

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

结果不是我所期望的。预期:a♠♣♥♦,但探险家出现了一个然后是4个小方块。但是,当我在资源管理器中输入文件重命名,然后复制文件名时,它会正确插入编辑器。 当我输入显示这些字符的文件名时,或者说中文字符被复制并且编辑器粘贴在编辑器中,将小方块显示在文件名中。 使用-fexec-charset = xxxx的实验甚至不会产生所需的结果。鉴于副本的结果和粘贴实验,我想有一些非常愚蠢的事情正在发生。这是真的,解决方案应该是愚蠢的简单......

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

1 个答案:

答案 0 :(得分:1)

这只是一个字体问题。编辑器显然更聪明地为文件名中的字形选择合适的字体。对于它的价值,在Windows 7上,Far(使用Consolas)和Explorer(使用Segoe UI)都没有正确显示文件名的问题:

enter image description here enter image description here

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