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

devtools/2024/12/28 7:01:22/

文章目录

    • @[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,编译器可以据此正确地解析文件中的字符。
环境版本
IDEvscode
系统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

在这里插入图片描述

  • 然后就可以正常编译并且输出中文了;

在这里插入图片描述




http://www.ppmy.cn/devtools/146039.html

相关文章

qt创建线程的四种方式

第一种 继承QThread类,然后重写run()函数 // 线程一 Mythread1 new CMyThread; connect(Mythread1,&CMyThread::sig_num,this,&MainWindow::slots_thread1); connect(ui->pushButton,&QPushButton::clicked,[](){Mythread1->m_state ThreadSt…

[计算机网络]OSPF协议

开放最短路径优先OSPF 1)OSPF的工作方式 1>和谁交换消息 使用洪泛法,向本自治系统的所有路由器发送消息。 2>交换什么消息 发送的消息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 链路状态就是说…

【机器学习】因微知著,穷数通灵:微积分与机器学习的量化之美

文章目录 微积分基础:理解变化与累积的数学前言一、多重积分的基本概念与计算1.1 多重积分的定义与重要性1.1.1 多重积分的基本组成1.1.2 多重积分在机器学习中的应用 1.2 多重积分的历史与发展1.2.1 多重积分的历史1.2.2 多重积分的发展 二、微分方程的基本概念与解…

RCE-PLUS (学习记录)

源码 <?php error_reporting(0); highlight_file(__FILE__); function strCheck($cmd) {if(!preg_match("/\;|\&|\\$|\x09|\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){return($cmd);}else{die("i hate this"…

大语言模型的token和向量

现在大语言模型火了&#xff0c;像 ChatGPT 什么的&#xff0c;能回答问题、写文章&#xff0c;。但它们为啥这么聪明呢&#xff1f;这就和向量、Token 有关系。那怎么通过向量、Token来理解我们的问题呢。看完这篇文章就知道了 token Token 就像是语言里的小积木&#xff0c…

前后端分离(前端删除数据库数据)

1.实现思路前端把用户Id用axios请求发送给后端&#xff0c;后端获取id&#xff0c;把用户数据删除并返回给前端一个删除成功响应 2.编写axios请求代码 const deleteEmployee async (empNo) > {try {const response await axios.delete(http://localhost:8080/api/delEmp,…

洞察 Facebook:用户行为与社交趋势

Facebook&#xff0c;作为全球最大社交平台之一&#xff0c;长期占据社交媒体的主导地位。自2004年成立以来&#xff0c;Facebook不仅影响了人们的社交方式&#xff0c;还推动了数字社交文化的演变。本文将洞察Facebook上的用户行为和社交趋势&#xff0c;探讨其如何塑造现代社…

天融信网络安全基础知识3

1.如果一个网站存在CSRF漏洞&#xff0c;可以通过CSRF漏洞做什么&#xff1f; D A获取网站用户注册的个人资料信息 B修改网站用户注册的个人资料信息 C冒用网站用户的身份发布信息 D以上都可以 2.Firefox浏览器插件Hackbar提供的功能没有什么&#xff1f;C A.修改浏览器访问…