1. 程式人生 > >向控制檯輸出unicode中文字元

向控制檯輸出unicode中文字元

當向終端、控制檯輸出 wchar_t 型別的中文字元時,需要呼叫setlocale()函式進行區域設定,因為通常終端、控制檯環境自身是不支援 UCS 系列的字符集編碼的,使用流操作函式時(如:printf()),在標準/RT庫實現的內部會將 UCS 字元轉換成合適的本地 ANSI 編碼字元,轉換的依據就是 setlocale() 設定的活動 locale,最後將結果字元序列傳遞給終端,對於來自終端的輸入流這個過程剛好相反。
setlocale(LC_CTYPE,"chs");//設定中文字元

wchar_t *p = L"中文";
wprintf(L"%s\n", p);

需要注意的是在Linux下用 wprintf() 時,要用 %ls

 表示 wchar_t 的字串。

//C下控制檯輸出寬字元
setlocale(LC_CTYPE, "");
wchar_t *t = L"abc你好123";
wprintf(L"%s\n", t);

//C++下控制檯輸出寬字元
using std::locale;
wcout.imbue(locale(locale(), "", LC_CTYPE));
wchar_t *t = L"abc你好123";
wcout << t << endl;


轉載出處:http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.html