C++控制檯輸出UTF-8亂碼
阿新 • • 發佈:2019-01-02
找到了一個函式,列印時候用這個函式包裝一下,把UTF-8格式轉成GB2312格式就可以輸出到控制檯了。
static char* U2G(const char* utf8) { int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0); wchar_t* wstr = new wchar_t[len + 1]; memset(wstr, 0, len + 1); MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len); len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL); char* str = new char[len + 1]; memset(str, 0, len + 1); WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL); if (wstr) delete[] wstr; return str; }
下面這個方法試過,我這裡無效,大家也可以參考試試:https://blog.csdn.net/hik_zxw/article/details/52789570
這個方法注意要改動一個地方,wcscpy不安全會報錯,改成wcscpy_s就可以了。