C++ UTF-8 字符串

标签 c++ string c++11 utf-8

我正在阅读 Bjarne Stroustrup 的“The C++ programming language”,在第 7.3.2.2 节中通过打印说明:

u8"the officials vowels in Danish are:a, e, i o, u, \u00E6, \u00F8, \u00E5 and y."

你会得到:

the officials vowels in Danish are:a, e, i o, u, æ, ø, å and y.

但是,如果我在自己的机器上尝试这个,我会得到这个:

the officials vowels in Danish are:a, e, i o, u, ├Ž, ├Ş, ├ą and y.

我做错了什么?

最佳答案

由于某些原因,Windows 在控制台中默认不使用 UTF-8。

按照建议运行 chcp 65001 应该可以工作(65001 是 UTF-8 的 code page)。

或者我以编程方式使用:

#ifdef _WIN32
    if( !SetConsoleOutputCP( CP_UTF8 ) )
        throw "Setting Windows console to UTF-8 codepage failed!";
#endif

PS:IIRC 我在使用 cout 时也遇到了问题(可能是由于 locale)。但是 printf() 适合我。

关于C++ UTF-8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183804/

相关文章:

c++ - C++ 字符串附加和运算符 += 之间的区别

不使用 strlen() 函数计算字符串长度

C++ - Vector 中的对象无法修改

c++ - 从模板创建通用打印函数以打印原始数据类型变量的值

c++ - 将字符串与其缩写匹配

c++ - 发布者订阅者模式的现代替代方案

c++ - 如何在未来的 C++ 11 中多次使用 get() 或如何获取 vector 值?

c++ - 为多线程锁定一部分内存

c++ - 类成员变量不保存状态

c++:允许临时对象调用非常量成员函数的设计理念是什么?