BCB控制台輸出中文的問題

2021-09-01 00:13:31 字數 883 閱讀 1394

bcb6控制台輸出中文是沒有問題的,但是wcout輸出寬字元中文(wchar_t)是不正常的,但wprintf輸出是正常的。

在cb10中可以設定:

setlocale(lc_ctype, "");  //wprintf

wcout.imbue(locale("",lc_ctype)); //cb10 可行

但在cb6中是不行的,而cout輸出中文的是很正常的的,因此需將顯示的寬字元中文轉換為多字元中文即可。

如下**:

setlocale(lc_ctype, "");  //wprintf

"",lc_ctype)); //cb10 可行

wchar_t * wstr = l"最好的世界是永遠進不去的世界。"; // 定義寬字元陣列,注意 l 是大寫

int 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);

cout <

wprintf(l"wprintf輸出中文:%s\n",wstr);

另外多執行緒中的cout和printf也一定要注意執行緒同步,否則也會出現中文亂碼

控制台輸出中文亂碼問題

問題描述 cout 中文字元 在控制台輸出時出現亂碼。解決辦法 重新點出選單,選 預設值 項,發現 預設值 裡的 當前 頁 是可以設定,有兩個選項 437 oem 美國 和 936 ansi oem 簡體中文 gbk 將 當前 頁 設定為 936 ansi oem 簡體中文 gbk 點 確定 沒有發...

Vc 控制台輸出中文亂碼

vc 解決方案一 修改檔案的編碼 修改源 檔案的 編碼格式 使其和控制台的編碼格式保持一致.控制台的編碼格式預設是936 檔案的編碼格式,可以通過vs很方便的修改 先用vs開啟對應的檔案,然後如下操作 如果控制台的編碼和程式的編碼一致,還是有中文亂碼,就需要修改控制台的屬性,右擊控制台標題欄,選擇 ...

控制台輸出控制

by jingzhongrong 通過win32api提供的函式,可以對控制台程式的輸出進行控制,例如字型顏色 標題文字,以及各種屬性等等。主要使用到的函式以及宣告如下 handle getstdhandle dword nstdhandle 此函式用於獲取控制台輸出 輸入控制代碼。得到控制代碼之後...