问题的原因应该在cmd的编码和c++程序编码(源文件编码)的不同。cmd默认的是gbk编码,而我用的vs code默认是utf-8编码,因而在输出中文文本时会出现乱码。

但我也遇到了一个比较怪异的情况,就是cmd和cpp文件编码都是gbk的情况下输出中文依然会乱码,但是当输出的文本第一个字符是英文或者空格的时候就不乱码了,这个问题依然没有解决,搜索的时候发现有人也遇到过,但也不知道怎么解决的。

所以解决方案就是全部用utf-8编码(搜索到的还有什么local、wcout、字符宽度、L"  "什么的,但是没太看懂)

1.在cmd里先运行命令

chcp 

然后再在命令行里启动程序。这种修改cmd编码的方式只能持续到这次命令行程序关闭为止。

2.或者在c++源代码里更改cmd编码

#include <cstdlib>//可以引入system("pause")来实现程序的暂停
using namespace std;//引入命名空间std,使得std::cout和std::endl可以直接省去std::
int main()
{
system("chcp 65001");
return ;
}

这样有一点我觉得不好的是会显示执行chcp这条命令的返回文本,不太好看

3.使用SetConsoleOutputCP

#include <windows.h>//用于函数SetConsoleOutputCP(65001);更改cmd编码为utf8
using namespace std;//引入命名空间std,使得std::cout和std::endl可以直接省去std:: int main()
{
SetConsoleOutputCP();
return ;
}

4.使用旧版控制台

在使用上述1、2、3的设置后虽然可以输出在源代码里定义好的中文字符,但是在用cin让用户输入时,却不能正确输出用户输入的中文字符。

在cmd的属性页面勾选使用旧版控制台后解决了上述所有的问题。(虽然不想扔锅给cmd,但这么看来,好像还是cmd的锅

5.追根溯源的终极原因

终于,在我遇到这个问题后的四个月后,上次因为这个问题询问过的同学也遇到了这个问题。在同学地努力探索下,终于找到了原因是什么。

直接放他的文章链接了:mingw控制台中文乱码

c++输出中文乱码解决方案的更多相关文章

  1. sublime text 3 python 控制台输出中文乱码解决方案

    自建的python运行环境如下:python3 找到python3.sublime-build文件打开,在文件中加入"env": { "PYTHONIOENCODING& ...

  2. JSP中pageEncoding和charset区别,中文乱码解决方案(转载)

    转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...

  3. boost::xml——基本操作以及中文乱码解决方案 (续)

    本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...

  4. 编码(ACSII unicod UTF-8)、QT输出中文乱码深入分析

    总结: 1. qt输出中文乱码原因分析 qt的编程环境默认是utf-8编码格式(关于编码见下文知识要点一): cout << "中文" << endl; 程 ...

  5. 解决IntelliJ IDEA 控制台输出中文乱码问题

    解决IntelliJ IDEA 控制台输出中文乱码问题 问题描述:如图,控制台输出的字符,乱码 解决方案 第一步:修改intellij idea配置文件: 找到Intellij idea安装目录,bi ...

  6. 【C++】解决c++中cout输出中文乱码问题

    问题:cout输出中文乱码.例如下面的代码输出会乱码. cout << "成功!" << endl; 输出结果: 解决方案: 控制台还原旧版即可,打开程序- ...

  7. aspx页面,中文乱码解决方案

    由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解 ...

  8. .Net Core 控制台输出中文乱码

    Net Core 控制台输出中文乱码的解决方法: public static void Main(string[] args)         {             Console.Output ...

  9. 在Servlet中出现一个输出中文乱码的问题(已经解)。

    在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...

随机推荐

  1. hashMap的原理

    hashMap的原理分析(转载) 1.总结: HashMap是基于哈希表实现的,用Entry[]来存储数据,而Entry中封装了key.value.hash以及Entry类型的next HashMap ...

  2. linux用户态和内核态理解

    1.特权级         Intel x86架构的cpu一共有0-4四个特权级,0级最高,3级最低,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查.硬件已经提供了一套特权级使用的相关机制 ...

  3. mysql新建用户host使用%但使用localhost无法连接

    今天新建了一个用户,权限也给了,host设置的为% 但是使用该用户连接时出现如下错误 查看用户 mysql> select host,user,password from mysql.user; ...

  4. 二级C语言模拟试题(第1套)

    1. 选择题. 1-1,判断各种变量所占的字节数. #include<stdio.h> int main() { char p[] = {'6','2','3'}, *q = p; int ...

  5. python之 小甲鱼教程 Easygui 篇

    博客转自 https://blog.csdn.net/bestallen/article/details/51933427 终于有点实质性可以看到摸到的界面了,搜了一下虽然easygui用的不多,但是 ...

  6. SpringBoot系列教程web篇之过滤器Filter使用指南

    web三大组件之一Filter,可以说是很多小伙伴学习java web时最早接触的知识点了,然而学得早不代表就用得多.基本上,如果不是让你从0到1写一个web应用(或者说即便从0到1写一个web应用) ...

  7. Spring boot + mybatis + oracle代码生成器

    在pom文件中加入依赖: <build> <plugins> <!--逆向工程--> <plugin> <groupId>org.mybat ...

  8. [转帖]8个最佳Docker容器监控工具,收藏了

    8个最佳Docker容器监控工具,收藏了 https://www.sohu.com/a/341156793_100159565?spm=smpc.author.fd-d.9.1574127778732 ...

  9. 【rt-thread】2、尝试用ENV添加18b20传感器

    尝试用ENV添加18b20传感器 rt-thread能通过env工具添加或者裁剪工程,这里调试的是通过ENV添加18b20传感器. 具体程序实现,可以参考以下资料 https://www.rt-thr ...

  10. NAIPC 2018

    E. Prefix Free Code 大意: 给定$n$个串, 保证任意一个串都不是另一个串的前缀, 从中选出$k$个串可以拼成$\binom{n}{k}k!$种串. 给定其中一个串, 求这个串的排 ...