在 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