在 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中文网其他相关文章!