在Windows 上用C 處理UTF-8 字串
將字串編碼為UTF-8 廣泛用於跨平台應用程式。然而,在 Windows 上將 UTF-8 字串輸出到 std::cout 會帶來獨特的挑戰。
Windows 上的預設行為是 std::cout 期望非 Unicode 格式的字串。當提供 UTF-8 字串時,它會顯示損壞的字元。
要解決此問題,有兩個主要步驟:
這裡是一個包含這些解決方案的修改後的程式碼片段:
<code class="cpp">#include <string> #include <iostream> #include <Windows.h> #include <cstdio> int main() { // Set console code page to UTF-8 SetConsoleOutputCP(CP_UTF8); // Enable buffering to prevent byte-by-byte transmission setvbuf(stdout, nullptr, _IOFBF, 1000); // Output UTF-8 string std::string test = u8"Greek: αβγδ; German: Übergrößenträger"; std::cout << test << std::endl; return 0; }</code>
此外對於這些步驟,請注意Windows 控制台中的光柵字體可能無法正確顯示非ASCII Unicode 字元。為了實現正確的渲染,建議切換到 TrueType 字體,該字體現在是 Windows 10 及更高版本中的預設字體。
以上是如何在 Windows 上正確輸出 UTF-8 字串到 `std::cout`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!