我尝试执行以下代码:
#include <iostream>
using namespace std;
int main() {
unsigned char datoChar = 168;
cout << datoChar << endl;
return 0;
}
它返回一个带有"但它应该返回";?">
您没有指定您在哪个平台上,以及当前的locale
是什么,但如果您在类似Unix的操作系统上运行,终端很可能会将字符解释为UTF-8,而不是cp437
。CP437、CP1252和扩展ASCII现在大多已经过时,并且仅用于类似DOS的终端,如Windows的cmd.exe
。您可以尝试使用CHCP
命令在CMD.EXE中切换到CP437。
在UTF-8中,0x7f
上的所有字节都被认为是保留的,因为它们用于实现多字符编码。在UTF-8中,"?"是代码点U+00BF,跨越两个独立的字节。
您可以使用十六进制uXXXX
表示法将其指定为文字,例如在中
std::cout << "u00BF" << std::endl;