解决VSCode文件的中文GBK和UTF-8编码之间乱码问题

news/2024/9/20 3:52:54 标签: vscode, ide, 编辑器

NOTE:近日笔者在使用VSCode编码环境的时候,出现了中文和UTF-8两者之间乱码的问题,特编写本片文章,以作学习记录。

1.需求

用VSCode打开外部的GBK2312编码文件,想在VSCode中统一以UTF-8编码查看(笔者推荐UTF-8)
或者用VSCode打开外部的UTF-8编码文件,想在VSCode中统一以GBK2312编码查看。

2.乱码问题和现象

如下图所示。为何会出现这种乱码现象呢?因为main.c文件在VSCode外,已经被以GBK的编码格式保存,但是……但是使用VSCode默认打开的格式是UTF-8,不兼容就发生乱码了。
在这里插入图片描述
在这里插入图片描述

3.解决方案

这里笔者以上述第1种需求举例,第2种需求以此类推。
解决方案:
1)设置—>搜索“编码”,找到Files:Encoding—>在下拉框选择UTF-8。
在这里插入图片描述
2)因为main.c是GBK编码文件,所以我们一定要先使用GBK编码格式将main.c文件重新打开,让其中文显示正常,具体步骤按照下图的步走。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不知道大家是不是到这里觉得显示正常成中文就结束了呢?NONONO,到这里main.c文件的状态只是从
[GBK编码格式保存]变成了[GBK编码格式保存] + [以GBK编码格式打开正常]。
但我们想要的结果是[UTF-8编码格式保存] + [UTF-8编码格式打开正常]…………所以我们继续…………

3)再次点击VSCode右下角的编码处(后面就不作图示,相信大家会操作),先通过编码保存—>选择UTF-8,然后通过编码重新打开—>选择UTF-8,顺序不要搞反。
到这里就告一段落,main.c文件能够以UTF-8编码保存和正常打开,可以尽情愉快地编码了。

最后笔者建议:
VSCode的工程文件都设置为UTF-8格式(即使在Keil5 等IDE中我们已将编码格式换成简体中文),这样会在很大程度上避免很多打开文件打印程序输出结果的乱码问题,如果要问为什么的话,请看下图
在这里插入图片描述
大家如果喜欢用GBK统一的编码格式,也可设置VSCode的代码结果输出指向cmd或powershell,因为cmd或powershell默认是GBK编码格式,如果VSCode的文件为GBK编码格式,则互相兼容。


http://www.niftyadmin.cn/n/5666515.html

相关文章

Datawhile 组队学习Tiny-universe Task01

Task01:LLama3模型讲解 仓库链接:GitHub - datawhalechina/tiny-universe: 《大模型白盒子构建指南》:一个全手搓的Tiny-Universe 参考博客:LLaMA的解读与其微调(含LLaMA 2):Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子…

圆周阵列元件的间距增加操作方法

在进行器件圆周阵列时,内圈的角度和外圈的旋转角度都相同,由于内圈的圆周长小于外圈的圆周长,有可能在内圈造成部分元件之间有两个焊盘会有覆盖的情况,此时需要对内圈的元件位置进行微调,需要增加在同一半径位置的元件…

代码随想录_刷题笔记_第二次

链表 — 环形链表 题目链接:142. 环形链表 II - 力扣(LeetCode) 题目要求: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点&#xff0c…

springbootKPL比赛网上售票系统

基于springbootvue实现的KPL比赛网上售票系统 (源码L文ppt)4-068 4.2 系统结构设计 架构图是系统的体系结构,体系结构是体系结构体系的重要组成部分。KPL比赛网上售票系统的总体结构设计如图4-2所示。 图4-2 系统总体架构图 4.3数据…

JavaDS —— 图

图的概念 图是由顶点集合以及顶点之间的关系组成的一种数据结构:G (V,E) 其中 V 表示的是顶点集合 : V { x | x 属于某个数据对象集} 是有穷非空集合 E 叫做边的集合 : E {(x, y) | x, y 属于 V} 或者 …

Linux基础 -- 原子同步之__sync_val_compare_and_swap 用法详解

__sync_val_compare_and_swap 用法详解 __sync_val_compare_and_swap 是 GCC 提供的一个内置函数,用于实现原子操作。它在多线程编程中非常有用,可以用来实现无锁数据结构和同步机制。该函数提供了一个原子性的比较并交换操作,即在一个多线程…

GUI编程18:文本框、密码框、文本域

视频链接:20、文本框、密码框、文本域_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p20&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.文本框 示例代码: package com.yundait.lesson06;import javax.swing.*; import java.a…

【Vue】2

1 Vue 生命周期 Vue生命周期:一个 Vue 实例从 创建 到 销毁 的整个过程 创建(create)阶段:组件实例化时,初始化数据、事件、计算属性等挂载(mount)阶段:将模板渲染并挂载到 DOM 上更新(update)阶段:当数据发生变化时…