1. 开发环境:windows、cmake、qt5.14.2。visual studio 2019。
2. 开发方式是使用cmake管理代码,在开发时使用cmake生成Visual 2019工程,然后在这个工程里进行开发。
3. 使用的日志是对spdlog进行封装后的,而spdlog是支持utf8的。
4. 在Visual 2019中安装插件Force UTF-8(No BOM)。
5. 在cmake中设置utf8为源字符集和执行字符集:
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/source-charset:utf-8>")
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/execution-charset:utf-8>")
最后,这样就保证了代码文件、源字符集、执行字符集均为UTF8,再也不用担心中文的问题了。
6. 插曲:
在这过程中自己差点被忽悠了。起因是之前我确实已经设置过,但是若将中文赋值给std::string,就会导致在vs2019中看到这个std::string是乱码,就觉得这样是错的。但实际上是因为windows系统默认使用的是gbk编码,而vs2019中std::string显示内容就会使用系统的默认编码,编码不匹配所以乱码,而将中文赋值给QString调试能正常显示和写入(可以尝试将QString或std::string写入spdlog,写入文件的日志内容都是正确的。而QString与std::string互转就更简单了,因为他们是使用相同的编码。调用QString::fromStdString()即可)。