2011-02-02 89 views

回答

3

這取決於平臺和在命令提示的編碼。

這就是說,你可能有更多的運氣

std::wcout << L"你好" << std::endl; 
1

取決於操作系統和執行。目前活躍的C++標準甚至沒有談到Unicode。

在Windows上,我相信你可以使用寬字符版本。然後,您的代碼將需要:

std::wcout << L"ni3 hao3" << std::endl; 

但是,您可能必須輸入特定的Unicode字符代碼,因爲你使用的代碼集編寫你的C++源可能不統一。

1

這一切都取決於您使用的控制檯/外殼。

有些彈可配置爲使用UTF-8(我做到了一次很久以前),所以它可以做到的,但我忘了細節。

之前硬骨素真的可以更具體的,我們需要知道你正在使用的shell運行的外殼以及在什麼平臺(約每一個版本的全部細節)。

1

Windows控制檯部分支持Unicode。它不支持,例如,從右到左的語言。

您與cout例如沒有做輸出的Unicode。改爲使用wcout。或者使用WriteConsoleW

2

既然你在說話你正在說話的Windows 控制檯窗口

Windows控制檯窗口基於Unicode,更具體UCS-2(基本多文種平面,基本原始的16位Unicode)。

相反的是建議的在其他的答案,你真的不能做更多的WRT。結果爲std::wcout而不是std::cout。標準寬輸出流只轉換爲程序的單字節執行字符編碼。在Windows中,默認情況下是OEM字符編碼(可以通過未公開的註冊表鍵配置)。

但是,您可以通過Windows API的控制檯功能輸出Unicode。

注意:將控制檯窗口設置爲UTF-8並不是一個好主意。然後,[cmd.exe]命令解釋器只是默默地忽略大多數命令。至少在Windows XP和更早版本中。

我我只設置OEM到Windows ANSI西方(通過提到無證註冊表項),它適用於大多數的目的,但當然不是中國人。它是代碼頁1252.另外,您可以通過每個命令解釋程序實例中的命令chcp 1252以及其他方式手動執行此操作。

Cheers & hth。,