代码之家  ›  专栏  ›  技术社区  ›  Flamefire

UTF8嵌入std流的UTF8字符不完整

  •  1
  • Flamefire  · 技术社区  · 6 年前

    我最近有个奇怪的 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

    0 回复  |  直到 6 年前