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;
  • 然后就可以正常编译并且输出中文了;


相关推荐
java资料站1 小时前
二、Spring AI Alibaba · ChatModel
java·windows·spring
北冥you鱼2 小时前
Go 语言空接口(interface{})使用场景与最佳实践
开发语言·windows·golang
夏虫不可与之言冰5 小时前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商
打工仔折腾 AI8 小时前
FaceFusion本地换脸实战:Windows整合包、模型选择与遮罩调参记录
人工智能·windows·后端·python·深度学习·性能优化·ai agent 实战
小蜗牛狂飙记10 小时前
Windows 双击 Jar 包无反应,不用写 bat 脚本!Jarfix 一键修复(以 Struts2 扫描工具为例)
windows·struts·jar
坐看风云变幻10 小时前
Betaflight 开发环境搭建保姆级教程(Ubuntu / Windows+WSL / Docker 三方案 + 官方网址大全)
windows·ubuntu·docker·无人机·飞控·betaflight
IT技术分享社区11 小时前
在 Windows 上跑未改动的 Linux 程序:微软 LiteBox v0.1 把这件事变简单了
linux·运维·windows·microsoft·开源
kakakahahahaha11 小时前
Win10/Win11 Windows Hello指纹不可用处理:WbioSrvc、传感器驱动与登录策略
windows·电脑·笔记本电脑·内容运营·软件需求
小黄人软件12 小时前
粘贴助手C++版 支持 Windows 7 / 10 / 11 不会出现缺少api-ms-win-core-path-11-1-0.dll
开发语言·c++·windows
Vex2une21 小时前
Windows 性能监视器发展史:从 PerfMon 计数器到 XPerf 深度诊断
windows·wpa·etw·性能监视器·perfmon·性能计数器·xperf