我最近有个奇怪的
bugreport
#include <iostream>
#include <sstream>
int main() {
std::cout.imbue(std::locale("fr_FR.UTF-8"));
std::cout << 1337;
}
这个在我的机器上的输出是“1337”或十六进制(通过hextump)“20333330037”。但在有缺陷的人的机器上,十六进制输出是“e23133330037”。
“e2”是
zero width non joiner
e2 80 af
UTF-8格式。
这怎么可能?从我的理解中,特殊字符是比普通空间更好的数分隔符,但为什么是C++(?)无法完全打印出来?
./a.out | hexdump