主要有这些问题:

  • 令编辑器正确提示 UTF-8 ;
  • 正确编译有 BOM 和无 BOM 的 UTF-8 文件(关于 /utf-8 的使用);
  • 有时 ostream 未能正确输出 UTF-8 字元串,而 & 中的函数可以。目前看来和流对象中的 locale 的设置有关。对此应手动在代码中设置,还是配置项目?

(不考虑之前的版本)


1、编辑器一直都可以UTF-8,不管有没有BOM

2、你要分清楚C++编译器里面,关于文件的编码,和文件里面面"fuck"产生出来的运行时的编码的区别。如果你只是想跨平台的话,无论VC++还是clang++都可以正确识别BOM,vim、gedit和vscode也都可以。所以你不用管那么多复杂的东西,全部都加上BOM就可以了。至于g++让他去死就好了(逃

3、ostream输出UTF-8格式的字元串取决于你的"fuck"到底是什么格式,还有你的locale和codepage是不是对。stl里面有些库,他会专门去看你的字元串跟你的locale是否相匹配,哪怕是UTF-8,也要删掉几个locale不认识的字元,然后才给你输出出来。

总之,"fuck"字元串里面的东西在运行时是否UTF-8,跟你的文件格式是否UTF-8,是没有关系的。你完全可以做到一个UTF-8的cpp文件里面写的字元串运行的时候是GB2312编码。你应该分清楚这两个事情,然后再去改配置。


推荐阅读:
查看原文 >>
相关文章