文章目录
- @[toc]
- 1、概述
- 2、修改已创建文件编码
- 3、修改vscode默认编码
文章目录
- @[toc]
- 1、概述
- 2、修改已创建文件编码
- 3、修改vscode默认编码
更多精彩内容 |
---|
👉内容导航 👈 |
👉C++ 👈 |
👉开发工具 👈 |
1、概述
- 在使用MSVC编译器时,出现中文报错的问题可能与编码格式有关。
- UTF-8是一种变长的Unicode编码方式,它可以用来表示世界上几乎所有的字符。然而,UTF-8编码有两种常见的形式:UTF-8和UTF-8 with BOM(Byte Order Mark)。
- UTF-8 without BOM是最常见的UTF-8编码形式,它不包含BOM。BOM是一个特殊的字符序列(
EF BB BF
),用于标识文件的字节序。- 在UTF-8中,字节序是固定的,因此BOM在UTF-8中并不是必需的。然而,一些编辑器和工具可能会在文件开头添加BOM,以帮助识别文件的编码格式。
- MSVC编译器默认使用系统的本地编码(如Windows-1252)来处理源文件。如果源文件使用UTF-8 without BOM编码,而编译器期望的是本地编码,那么编译器可能会错误地解释文件中的字符,导致中文报错。
- 当使用UTF-8 with BOM编码时,BOM可以帮助编译器正确识别文件的编码格式,从而避免中文报错。这是因为BOM在文件开头明确标识了文件的编码为UTF-8,编译器可以据此正确地解析文件中的字符。
环境 | 版本 |
---|---|
IDE | vscode |
系统 | windows11 |
构建工具 | cmake |
编译器 | msvc2022-64 |
问题: 使用msvc编译c++程序时出现如果代码中有中文,则会出现警告、输出乱码或者中文导致的编译失败,如下所示;
甯搁噺涓�鏈夋崲琛岀�� [E:\Code\C++\test\build\test1.vcxproj]
璇�娉曢敊璇�: 缂哄皯鈥�;鈥�(鍦ㄢ€渳鈥濈殑鍓嶉潰) [E:\Code\C++\test\build\test1.vcxproj]
璇ユ枃浠跺寘鍚�涓嶈兘鍦ㄥ綋鍓嶄唬鐮侀〉(936)涓�琛ㄧず鐨勫瓧绗︺€傝�峰皢璇ユ枃浠朵繚瀛樹负 Unicode 鏍煎紡浠ラ槻姝㈡暟鎹�涓㈠け [E:\Code\C++\test\build\test1.vcxproj]
2、修改已创建文件编码
对于已经存在的文件,需要选择使用utf-8 bom编码重新保存文件;
- 在vscode窗口右下角,选择
UTF-8
;
- 然后在弹窗中选择
通过编码保存
;
- 选择使用
UTF-8 with BOM
编码,然后就可以重新编译了;
vscode_54">3、修改vscode默认编码
vscode默认使用的是utf-8编码,需要修改为utf-8 bom编码。
如果一个文件一个文件该会非常麻烦,修改vscode默认编码后,新创建文件可以使用utf-8 bom编码。
- 选择【文件】【首选项】【设置】;
- 选择【文本编辑器】【文件】,将【Encoding】项改为使用
UTF-8 with BOM
;
- 然后就可以正常编译并且输出中文了;