修改第三方庫在windows下不支援中文的問題

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.