首页 > 编程语言 >Vscode/Sublime C++ 打印中文乱码问题解决

Vscode/Sublime C++ 打印中文乱码问题解决

时间:2022-11-22 13:11:40浏览次数:46  
标签:info char 中文 Vscode C++ 乱码 int include

#include <iostream>
using namespace std;

#ifdef _WIN32
    #include <windows.h>
#endif
int main()
{

#ifdef _WIN32
    //控制台显示乱码纠正
    SetConsoleOutputCP (65001);
    CONSOLE_FONT_INFOEX info = { 0 }; // 以下设置字体来支持中文显示。
    info.cbSize = sizeof(info);
    info.dwFontSize.Y = 16;
    info.FontWeight = FW_NORMAL;
    wcscpy(info.FaceName, L"NSimSun");//指定新宋体字体
    SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &info);
#endif


    cout << "中文乱码解决!" << endl;
    return 0;
}

有时候打印路径的时候会出现方框之类的错误显示。以下为终极解决方案

#include <iostream>
#include <windows.h>

void utf8ToGbk(char *utf8String, char *gbkString);

using namespace std;

int main(int argc, char **argv)
{
    //程序开始
    char text[MAX_PATH]="中文测试";
    char retText[MAX_PATH]={"\0"};
    utf8ToGbk(text,retText);
    cout << retText << endl;
    return 0;
}


void utf8ToGbk(char *utf8String, char *gbkString)
{
    wchar_t *unicodeStr = NULL;
    int nRetLen = 0;
    nRetLen = MultiByteToWideChar(CP_UTF8, 0, utf8String, -1, NULL, 0);
    //求需求的宽字符数大小
    unicodeStr = (wchar_t *)malloc(nRetLen * sizeof(wchar_t));
    nRetLen = MultiByteToWideChar(CP_UTF8, 0, utf8String, -1, unicodeStr, nRetLen);
    //将utf-8编码转换成unicode编码
    nRetLen = WideCharToMultiByte(CP_ACP, 0, unicodeStr, -1, NULL, 0, NULL, 0);
    //求转换所需字节数
    nRetLen = WideCharToMultiByte(CP_ACP, 0, unicodeStr, -1, gbkString, nRetLen, NULL, 0);
    //unicode编码转换成gbk编码
    free(unicodeStr);
}

标签:info,char,中文,Vscode,C++,乱码,int,include
From: https://www.cnblogs.com/xiaohoulaoyue/p/16914801.html

相关文章

  • 用C++写一遍linux socket通信过程
    要想深刻理解一些技术的底层,我还是觉得非用用c/c++写一遍的比较好。这其中的原因相信懂的人都懂。回忆一下上学时候在c语言课堂上的激动劲,如今感觉对c的理解真的都是那时候......
  • C++11
    longlong超长整形 C++11longlong超长整形详解(biancheng.net)    待更。。。......
  • 【C++/STL】0.容器概述
    文章目录​​一、容器分类​​​​(1)序列性容器​​​​(2)关联式容器​​​​(3)容器适配器​​​​二、容器共性​​​​三、容器比较​​一、容器分类(1)序列性容器​​序列式容......
  • 【C++/STL】2. vector向量
    vector与常用的数组类似,占用连续内存空间,对随机存取支持很好。可以类似数组用下标访问,也可以类似字符串用​​vector.at()​​成员函数访问vector是尾部开口设计,类似栈。从......
  • C/C++中拆分long/float/double等数据并重新组合的方法
    在嵌入式编程时,常常会遇到需要做数据通信的场景。单片机往往只支持一次8位的数据传递,为了传输较长的数据类型,只能先在主机将数据拆分,再在从机重新组合,这里介绍一些实用的数......
  • 【C++】使用boost库的split函数分割字符串
    1#include<iostream>2#include<vector>3#include<boost/algorithm/string.hpp>45intmain(constintargc,constchar*argv[])6{7std::vect......
  • C++快速幂
    C++快速幂快速幂的作用:当我们做一些高次幂的计算时,就不能直接进行暴力的计算。例如:需要计算2^n并且n≤10^18。这时候如果我们直接进行暴力的计算,时间复杂度为O(n),那......
  • 使用vscode+evernote印象笔记+markdown写在线笔记
    1.vscode安装evermonkey插件2.vscode快捷键:Ctrl+Shift+P,输入ever按提示进行操作EverNew:创建新evernote笔记;愉快地玩耍点击下列图片标红位置,可以实时预览......
  • 使用Anaconda管理虚拟环境(VScode)
    基本语句查看conda版本查看现有的虚拟环境```condaenvlist创建新虚拟环境```condacreate-npy36python=3.6删除某虚拟环境```condaremove--namepy38--a......
  • [C++学习笔记-IO控制_2]:控制台IO-cin 输入
    目录控制台I/O:cin输入1.重载的>>运算符2.cin的特点3.其他输入方法3.1单字符输入:get()3.2字符串输入:get()/getline()3.3其他的输入函数控制台I/O:cin输......