在Windows 上用C 處理UTF-8 字串
將字串編碼為UTF-8 廣泛用於跨平台應用程式。然而,在 Windows 上將 UTF-8 字串輸出到 std::cout 會帶來獨特的挑戰。
Windows 上的預設行為是 std::cout 期望非 Unicode 格式的字串。當提供 UTF-8 字串時,它會顯示損壞的字元。
要解決此問題,有兩個主要步驟:
這裡有一個包含這些解決方案的修改後的程式碼片段:
#include
#include
#include
#include
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 除了這些步驟之外,請注意 Windows 控制台中的光柵字型可能無法正確顯示非 ASCII Unicode 字元。為了正確渲染,建議切換到 TrueType 字體,該字體現在是 Windows 10 及更高版本中的預設字體。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3