【发布时间】:2014-01-28 10:16:24
【问题描述】:
我必须使用一个接受文件名作为字符串的库 (const char*)。内部文件使用fopen 打开。有没有办法让这个库接受 unicode 文件名?我可以使用WideCharToMultiByte 将 unicode 名称转换为 utf,然后再将它们传递给库吗?
一种可能的(不受欢迎的)解决方案是更改库接口 (char* -> wchar_t*) 并将 fopen 替换为特定于 Windows 的 _wopen。另一种解决方案是使用创建文件的符号链接并将其传递给库,但仅限于 NTFS 卷。
【问题讨论】:
-
您不能使用
WideCharToMultiByte转换为UTF-8,因为Windows 的narrow-char函数不支持UTF-8。它们仅支持本地编码(其中并非所有 Unicode 字符都可以表示)。将库界面更改为使用wchar_t是 Windows 上的典型操作。
标签: windows winapi visual-c++