vscode输出中文乱码解决方案
-----------------2021.4.23更新----------------------------------
原来更改电脑字符集的方法是可以的,但是会让一些古老的软件直接显示乱码,因为以前的很多软件都没适配 utf-8 ,所以今天更新下新的方式,还是回来改vscode 吧,之前就是找了半天没找到,才直接改电脑,转来转去又回来了,我吐了
ps:code-runner运行是没问题的,如果用 F5 调试还是乱码哈,毕竟只是改了 code-runner的相关设置,你不能期望他直接改了 cmd 的东西。
步骤
- 文件-------首选项-----------设置-----------用户------功能-------终端-------在 settings.json 中编辑
- 注释掉所有的
"code-runner.runInTerminal": true,
,完成
-----------------2021.4.23更新----------------------------------
背景
win10系统,编译器是MinGW
原因
出现乱码的原因一般都是编码问题,在vscode里面调用的是系统的终端,终端一般都是gbk的(runcoder、powershell、cmd),vscode一般默认utf-8;编码解码不匹配就乱码了呗,
解决办法
win10可以把电脑所有东西都设置成utf-8的
- 左下角设置------
时间与语言
区域
-------拉到下面找到,其他日期、时间和区域设置
----------然后点击区域 更改日期、时间和数字格式
- 进去后,
管理
-----------更改系统区域设置
------------勾选beta版:使用Unicode UTF-8 提供全球语言支持(U)
- 重启电脑,搞定收工
当时测试的代码
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int binarySearch(vector<int>& nums, int target) {
if(nums[0]>target || nums[nums.size()-1]<target){
return - 1;
}
int left = 0, right = nums.size(),mid=0;
while(left<=right){
mid = left + (right - left) / 2;
if(nums[mid]==target){
return mid;
}else if(nums[mid]>target){
right = mid - 1;
}
else if(nums[mid]<target){
left = mid + 1;
}
}
return -1; //当循环条件有=时
}
int main(){
vector<int> nums = { -140,-110,-10, 0, 3, 5, 15, 19,90,110, 122, 172,212};
//二分查找
int index = 0,target=19;
index = binarySearch(nums, target);
if(index!=-1){
cout << target << "在数组中的下标是:"<< index << endl;
}
// getchar();
return 0;
}