修改第三方库在windows下不支持中文的问题

来源:互联网 发布:excel保存后数据不见了 编辑:程序博客网 时间:2024/05/20 05:55
1.在mac环境下,由于mac的文件打开函数本来就支持utf8字符路径,所以可以直接传入中文字符,而不用修改第三方库代码。
2.由于windows的函数不支持utf8的字符,所以需要修改第三方库代码。
修改方法:
1.在第三方库中找到所有使用fopen的地方,如果这些文件都引用了同一个文件,可以在那个文件中添加替换fopen()的宏,代码如下:

.h
#ifdef _WIN32std::wstring Utf8ToUnicode(const char* buf);#define fopen(a, b) _wfopen(Utf8ToUnicode(a).c_str(), Utf8ToUnicode(b).c_str())#endif
.cpp
#ifdef _WIN32#include <Windows.h>#include <vector>std::wstring Utf8ToUnicode(const char* buf){    int len = ::MultiByteToWideChar(CP_UTF8, 0, buf, -1, NULL, 0);    if (len == 0)     {        return L"";    }    std::vector<wchar_t> unicode(len);    ::MultiByteToWideChar(CP_UTF8, 0, buf, -1, &unicode[0], len);    return &unicode[0];}#endif

windows字符转换函数可参考:http://www.cnblogs.com/gakusei/articles/1585211.html

原创粉丝点击