1. 程式人生 > >C++控制檯輸出UTF-8亂碼

C++控制檯輸出UTF-8亂碼

找到了一個函式,列印時候用這個函式包裝一下,把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就可以了。