windows下vscode使用msvc编译器出现中文乱码

### 文章目录

  • [@toc](#文章目录 @[toc] 1、概述 2、修改已创建文件编码 3、修改vscode默认编码)
  • [1、概述](#文章目录 @[toc] 1、概述 2、修改已创建文件编码 3、修改vscode默认编码)
  • [2、修改已创建文件编码](#文章目录 @[toc] 1、概述 2、修改已创建文件编码 3、修改vscode默认编码)
  • [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++程序时出现如果代码中有中文,则会出现警告、输出乱码或者中文导致的编译失败,如下所示;

shell 复制代码
甯搁噺涓�鏈夋崲琛岀�� [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编码,然后就可以重新编译了;

3、修改vscode默认编码

vscode默认使用的是utf-8编码,需要修改为utf-8 bom编码。

如果一个文件一个文件该会非常麻烦,修改vscode默认编码后,新创建文件可以使用utf-8 bom编码。

  • 选择【文件】【首选项】【设置】;
  • 选择【文本编辑器】【文件】,将【Encoding】项改为使用UTF-8 with BOM
  • 然后就可以正常编译并且输出中文了;


相关推荐
sunoo-2292 小时前
【Linux 系统编程】学习第七天:线程属性 | 互斥锁 | 死锁 | 信号量 核心知识点 + 踩坑实战
linux·c语言·笔记·vscode·学习
铁手飞鹰3 小时前
VSCode Python .embed 嵌入式环境黄色波浪线问题
ide·vscode·python
百年੭ ᐕ)੭*⁾⁾3 小时前
Redash部署指南(Windows docker部署)
大数据·windows·docker·数据可视化·redash
吴可可1233 小时前
VSCode助力机械臂轨迹开发
vscode
意法半导体STM325 小时前
【官方原创】LAT1695转换STM32CubeIDE工程到STM32CubeIDE for Visual Studio Code
vscode·stm32·单片机·嵌入式硬件
Molesidy5 小时前
【Embedded Development】基于VSCode+IAR插件的IAR工程开发环境的搭建
ide·vscode·编辑器
牢姐与蒯7 小时前
安全模式下删除流氓文件
windows
qq762118227 小时前
windows Qt mingw 编译libzip
开发语言·windows·qt
曹牧7 小时前
Java:Java 数组转 List
java·开发语言·windows
Ai老司机7 小时前
Windows 本地文件搜索为什么快?本地索引加速定位的原理
windows