已经是2202年了,VS对于UTF-8编码的解析与保存仍然停留在原始时代。
个人项目基本是使用VS+Qt开发,两者默认处理编码的不同一直是个烦人的问题。VS在中文系统中使用GB2312或GBK编码,而Qt内部处理字符串则是默认UTF-8编码,当存在非ASCII范围内的字符时就不可避免地产生乱码。
即使只在注释中使用中文,当使用VS自带的git合并工具解决冲突时也会导致乱码,所以我通常使用第三方合并工具。(注:最新VSCode支持3-way合并,虽然并不好用,配置方法见文档)
进入正题,目前许多主流的编辑器都支持使用EditorConfig
配置文件对整个项目的样式风格进行统一设置,不仅可以设置缩进与对齐等代码样式,还能指定保存的文件编码。
相关链接:
EditorConfig
EditorConfig 设置 - Visual Studio (Windows)
EditorConfig
的使用方法很简单,只需在项目根目录下创建一个文本文件并命名为.editorconfig
,并在文件中添加相应条目即可。
我的C++项目主要使用以下配置:
root = true
[*.{c,cc,cpp,cppm,cxx,h,h++,hh,hpp,hxx,inl,ipp,ixx,tlh,tli}]
end_of_line = crlf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
charset = utf-8
# Visual C++ 代码注释风格设置
cpp_generate_documentation_comments = doxygen_slash_star
文件保存为UTF-8后通常VS会报错或者运行时显示乱码,关于VS乱码的问题有一篇文章说得比较详细:
探究Visual Studio中的乱码问题 | CSDN
简单地说还要在项目属性中的C++选项添加/utf-8
命令行参数,如果需要控制台输出编码也为UTF-8则还要在main函数中调用SetConsoleOutputCP(65001);
(65001为UTF-8代码页,需要包含Windows.h)。
到此整个项目就默认以UTF-8编码保存并执行了。
评论(0)