3 回答

TA貢獻2036條經驗 獲得超8個贊
那std::wcout呢
#include <iostream>
int main() {
std::wcout << L"Hello World!" << std::endl;
return 0;
}
這是標準的寬字符輸出流。
但是,正如Adrian指出的那樣,這并不能解決事實cmd,默認情況下,它不處理Unicode輸出。可以通過手動配置控制臺來解決,如Adrian的答案中所述:
啟動cmd與/u論證;
調用chcp 65001更改輸出格式;
并在控制臺中設置unicode字體(如Lucida Console Unicode)。
您也可以嘗試使用_setmode(_fileno(stdout), _O_U16TEXT);,它需要fcntl.h和io.h(如本答案所述,并在本博客文章中進行了記錄)。

TA貢獻1839條經驗 獲得超15個贊
我不確定Windows XP是否會完全支持您的需求。要使用命令控制臺啟用Unicode,需要做三件事:
使用來啟動命令窗口
cmd /u
。該/u
說您的程序將輸出Unicode。使用
chcp 65001
指示要使用UTF-8,而不是代碼頁中的一個。選擇具有更多字形覆蓋范圍的字體。Windows的較新版本中的命令窗口提供了
Lucida Console Unicode
。我的XP盒中有一個子集,稱為Lucida Console
。它沒有非常豐富的曲目,但是如果您只想顯示一些帶有重音符號的字符,就足夠了。

TA貢獻1936條經驗 獲得超7個贊
這基本上是正確的,但是... cmd
確實在默認情況下將Unicode輸出處理到控制臺,但是在重定向到文件時不處理。使用/u
它還可以將Unicode輸出到重定向文件。在這兩種情況下,“ Unicode”均表示UTF-16
Windows上的通常情況。chcp 65001
設置不與寬字符對應的ANSI
代碼頁,和。您無需將代碼頁設置為UTF-8即可輸出UTF16!此外,該API在之下被破壞了。如果要輸出超出ANSI代碼頁的字符,則此調用非常重要且必不可少!UTF-8
wcout
cmd /u
WriteFile()
chcp 65001
_setmode()
- 3 回答
- 0 關注
- 419 瀏覽
添加回答
舉報