Windows 中文版下 MSVC 对 UTF-8 支持(避免乱码)

原文:https://blog.iyatt.com/?p=14017

1 测试环境

我这里在

  • Windows 11 专业版 23H2 中文版
  • PowerShell 7.4.1
    中,默认的字符编码是 936 GB2312
    file

官方的标识码解释:https://learn.microsoft.com/zh-cn/windows/win32/Intl/code-page-identifiers
file

  • Visual Studio 2022

2 中文乱码出现的原因

出现乱码通常就是记录的规则和阅读的规则不一样导致的,举一个例子,我在纸上写了四个字“女子弓虽”,如果别人读的时候是把我的每两个字当作一个字,那么读取出来就是“好强”,乱码产生大致就是相似的原因。解决乱码的问题就在于保证每个阶段都是用的匹配的规则。

3 UTF-8 源码执行乱码的解决方案

在 Linux 中及其它很多领域的开发中 UTF-8 编码基本成为规范,在 Windows 中则可能出现问题。上面也提到了,中文版的终端编码是 GB2312,在保证源码是 UTF-8 的情况下,又要保证终端正常显示中文,考虑到两类方法:一种是将终端编码改 UTF-8,参考 https://blog.iyatt.com/?p=3437 ;第二种是让编译器来适应。
第一种方式,当前我是遇到了问题(前两年用的时候不记得有这个问题)。源码采用 UTF-8,MSVC 编译参数加或者不加 /utf-8,终端不管是 GB2312 还是 UTF-8,中文都出现乱码,但是如果源码采用 UTF-8 Bom 又没有问题,都能正常显示。
第二种方式,让 MSVC 按照 UTF-8 来处理源码,但是执行的时候按照 GB2312,这样就不会出现乱码了。给 MSVC 加上编译参数

/source-charset:utf-8 /execution-charset:gb2312

基于 VS 管理的项目的话,在项目名上右键打开属性,C/C++ -> 命令行 -> 其他选项 中加上
file

基于 CMake 管理的项目的话,用 add_compile_options 添加编译参数就行
file

前面提到的 /utf-8 就相当于是 /source-charset:utf-8 /execution-charset:utf-8


用 VScode 的时候默认编码就是 UTF-8,修改也十分方便,但是调试还得是 VS 强大,必不可少的使用 VS,而 VS 的编码自动适应控制台,手动指定会比较麻烦。
可以添加强制 UTF-8 保存的插件 Force UTF-8 (No BOM)
file

file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA的版本控制Local Changes和settings按钮显示问题

经常用idea的小伙伴应该对标题的这两个功能不陌生,特别是Local Changes 周日刚开工,我的idea就过期了,索性就下载了一个2023.3.3版本的,安装好打开一看,发现Local Changes 和 settings的按钮消失了,虽然说…

红外光谱法(IR)应用领域宽广 全球市场增长速度加快

红外光谱法(IR)应用领域宽广 全球市场增长速度加快 红外光谱法(IR),也称为红外分光光度法,分子吸收红外线,引起分子振动能级、转动能级跃迁,获得物质红外吸收光谱,测定物…

专业定制线缆厂家推荐:精工电联-小批量、多品类集成线缆定制的领航者

高品质定制线缆厂家推荐:精工电联-小批量、多品类集成线缆定制的领航者 在当今这个多元化、个性化的时代,定制化产品和服务越来越受到市场的青睐。精工电联作为高科技智能化产品及自动化设备专用连接线束和连接器配套服务商,致力于为高科技行…

怎么选择通配符证书?

通配符SSL证书又叫泛域名SSL证书(Wildcard Certficates),通配符SSL证书可以保护一个域名下同级子域名,不限制该级子域名的数量,且添加新的该级子域名无需重新审核和另外付费,可以节省大量的时间和成本。 一…

QFormLayout 背景色设置不成功

(图中的colour 拼错了) layout 一定要放在QWidget 里面,然后设置QWidget 的背景色就好了

【C++】C++中的继承

目录 介绍: 一,继承的访问权限 二,基类和派生类对象赋值转换 三,继承中的作用域 四,派生类的默认成员函数 1,构造函数 2,析构函数 3,拷贝构造和赋值运算符 五,继…

GitCode配置ssh

下载SSH windows设置里选“应用” 选“可选功能” 添加功能 安装这个 坐等安装,安装好后可以关闭设置。 运行 打开cmd 执行如下指令,启动SSH服务。 net start sshd设置开机自启动 把OpenSSH服务添加到Windows自启动服务中,可避免每…

java中实体pojo对于布尔类型属性命名尽量别以is开头,否则 fastjson可能会导致属性读取不到

假如我们有一个场景,就是需要将一个对象以字符串的形式,也就是jsonString存到一个地方,比如mysql,或者redis的String结构。现在有一个实体,我们自己创建的,叫做CusPojo.java 有两个属性是布尔类型的&#x…

STM32引脚重定义问题

最近在搞资源管理,发现有些引脚不能用 比如这个PE引脚。我想用他输出PWM,但是不能用,我也重定义了,还是不能用。回去翻看了技术手册。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射引脚功能,需…

NoSQL 数据库管理工具,搭载强大支持:Redis、Memcached、SSDB、LevelDB、RocksDB,为您的数据存储提供无与伦比的灵活性与性能!

NoSQL 数据库管理工具,搭载强大支持:Redis、Memcached、SSDB、LevelDB、RocksDB,为您的数据存储提供无与伦比的灵活性与性能! 【官网地址】:http://www.redisant.cn/nosql 介绍 直观的用户界面 从单一应用程序中同…

String 必知必会底层逻辑

String 是不可变的 String 类中使用 final 关键字修饰字符数组来保存字符串 public final class String implements java.io.Serializable, Comparable<String>, CharSequence {private final char value[];//... }final关键字的作用&#xff1a; 不可变性&#xff1a…

openai DALL-E 3 论文 提升图像生成的关键:更好的图像描述

摘要 我们展示了通过训练高度描述性的生成图像标题&#xff0c;可以显着改善文本到图像模型的提示跟随能力。 现有的文本到图像模型在跟随详细的图像描述方面存在困难&#xff0c;经常忽略单词或混淆提示的含义。 我们假设这个问题源于训练数据集中存在嘈杂和不准确的图像标…

人工智能|深度学习——基于对抗网络的室内定位系统

代码下载&#xff1a; 基于CSI的工业互联网深度学习定位.zip资源-CSDN文库 摘要 室内定位技术是工业互联网相关技术的关键一环。该技术旨在解决于室外定位且取得良好效果的GPS由于建筑物阻挡无法应用于室内的问题。实现室内定位技术&#xff0c;能够在真实工业场景下实时追踪和…

w29pikachu-ssrf实例

实验环境 php&#xff1a;7.3.4nts apache&#xff1a;2.4.39 浏览器&#xff1a;谷歌实验步骤 ssrf&#xff08;curl&#xff09; 打开ssrf(curl) 点击文字&#xff0c;跳转404页面&#xff0c;从反馈信息来看是找不到对应的页面。 查看源码&#xff0c;发现有个RD变量影…

【Flink网络通讯(一)】Flink RPC框架的整体设计

文章目录 1. Akka基本概念与Actor模型2. Akka相关demo2.1. 创建Akka系统2.2. 根据path获取Actor并与之通讯 3. Flink RPC框架与Akka的关系4.运行时RPC整体架构设计5. RpcEndpoint的设计与实现 我们从整体的角度看一下Flink RPC通信框架的设计与实现&#xff0c;了解其底层Akka通…

利用nbsp设置空格

想要实现上面效果&#xff0c;一开始直接<el-col :span"8" >{{ item.name }} </el-col> 或者<el-col :span"8" >{{ item.name }}</el-col>或者<el-col :span"8" >{{ item.name }}</el-col> 都无…

深入浅出JVM(三)之HotSpot虚拟机类加载机制

HotSpot虚拟机类加载机制 类的生命周期 什么叫做类加载? 类加载的定义: JVM把描述类的数据从Class文件加载到内存,并对数据进行校验,解析和初始化,最终变成可以被JVM直接使用的Java类型(因为可以动态产生,这里的Class文件并不是具体存在磁盘中的文件,而是二进制数据流) 一个…

善于利用GPT确实可以解决许多难题

当我设计一个导出Word文档的功能时&#xff0c;我面临了一个挑战。在技术选型时&#xff0c;我选择了poi-tl这个模板引擎&#xff0c;因为在网上看到了很多关于它的推荐。poi-tl可以根据模板快速导出Word文档。虽然之前没有做过类似的功能&#xff0c;而且项目中也没有用过&…

开年喜报!Walrus成功入选CNCF云原生全景图

近日&#xff0c;数澈软件 Seal &#xff08;以下简称“Seal”&#xff09;旗下开源应用管理平台 Walrus 成功入选云原生计算基金会全景图&#xff08;CNCF Landscape&#xff09;并收录至 “App Definition and Development - Application Definition & Image Build”板块…

Encoder-decoder 与Decoder-only 模型之间的使用区别

承接上文&#xff1a;Transformer Encoder-Decoer 结构回顾 笔者以huggingface T5 transformer 对encoder-decoder 模型进行了简单的回顾。 由于笔者最近使用decoder-only模型时发现&#xff0c;其使用细节和encoder-decoder有着非常大的区别&#xff1b;而huggingface的借口为…