c++输出中文乱码解决方案
问题的原因应该在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++输出中文乱码解决方案的更多相关文章
- sublime text 3 python 控制台输出中文乱码解决方案
自建的python运行环境如下:python3 找到python3.sublime-build文件打开,在文件中加入"env": { "PYTHONIOENCODING& ...
- JSP中pageEncoding和charset区别,中文乱码解决方案(转载)
转载自:JSP中pageEncoding和charset区别,中文乱码解决方案 JSP指令标签中<%@ page contentType="text/html;charset=GB23 ...
- boost::xml——基本操作以及中文乱码解决方案 (续)
本博文主要想说明以下两点: 1.对于上一篇的<boost::xml——基本操作以及中文乱码解决方案>解释,这篇博文基本解决了正确输入输出中英文问题,但是好像还没有解决修改中文出现乱码的问题 ...
- 编码(ACSII unicod UTF-8)、QT输出中文乱码深入分析
总结: 1. qt输出中文乱码原因分析 qt的编程环境默认是utf-8编码格式(关于编码见下文知识要点一): cout << "中文" << endl; 程 ...
- 解决IntelliJ IDEA 控制台输出中文乱码问题
解决IntelliJ IDEA 控制台输出中文乱码问题 问题描述:如图,控制台输出的字符,乱码 解决方案 第一步:修改intellij idea配置文件: 找到Intellij idea安装目录,bi ...
- 【C++】解决c++中cout输出中文乱码问题
问题:cout输出中文乱码.例如下面的代码输出会乱码. cout << "成功!" << endl; 输出结果: 解决方案: 控制台还原旧版即可,打开程序- ...
- aspx页面,中文乱码解决方案
由于文件编码方式编码方式不统一出现样式中文乱码解决方案: 今天碰到的问题:页面字体样式设置的'微软雅黑',可页面没引用.我调试看到样式出现中文乱码了 这种问题,就需要转换文件的编码方式,如下两步即可解 ...
- .Net Core 控制台输出中文乱码
Net Core 控制台输出中文乱码的解决方法: public static void Main(string[] args) { Console.Output ...
- 在Servlet中出现一个输出中文乱码的问题(已经解)。
在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...
随机推荐
- PHP ob_gzhandler的理解
PHP ob_gzhandler的理解那么对于我们这些没有开启mod_deflate模块的主机来说,就只能采用ob_gzhandler函数来压缩了,它的压缩效果和mod_deflate相比,相差很小, ...
- 在Gridview 中 对日期格式的控制
在数据库中保存日期格式的时候,我们需要在客户端的显示有自己的要求 这就需要对 datatime 类型的数据进行控制,使之显示为你需要的格式 数据库中 如果不对其进行控制,显示的格式为 当在前端页面上进 ...
- 手撕面试官系列(十一):BAT面试必备之常问85题
JVM专题 (面试题+答案领取方式见侧边栏) Java 类加载过程? 描述一下 JVM 加载 Class 文件的原理机制? Java 内存分配. GC 是什么? 为什么要有 GC? 简述 Java ...
- python3:使用for循环打印九九乘法表
for i in range(1, 10): for j in range(1, i + 1): print(j, '*', i, '=', i * j, end=" ") #en ...
- appium 方法整理
1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可 ...
- 解决打开IE报错“无法启动...丢失api-ms-win-core-path-l1-1-0.dll”的问题
打开IE突然发现报错 试了各种方法都不行 最终看这篇文章,才解决:https://www.yijile.com/log/577.html 打开IE设置选项,选择管理加载项,如图讲该选项禁用,就不报错. ...
- 2)NET CORE特性与优势
先看看netcore有哪些特性,哪些优点,与.net frameworkd 差异吧: l 跨平台: 可以在 Windows.macOS 和 Linux 操作系统上运行. l 跨体系结构保持一致: ...
- C# vb .net图像合成-合成艺术字 照片合成艺术字
在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...
- Ole操作帮助类
/// <summary> /// Ole操作类 /// </summary> public class OleDataBaseHandle { private static ...
- linux搭建GitLab
GitLab CentOS6 1. 安装VMware和CentOS 2. 安装必备Linux插件 3. 准备安装GitLab 4. 开始安装GitLab 5. 配置GitLab 6. 启动GitLab ...