IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> vs2019 控制台出现乱码的解决记录 -> 正文阅读

[开发工具]vs2019 控制台出现乱码的解决记录

情况:

  • 当时vs中的c语言程序以utf-8的格式存储,而windows控制台的默认输出为GBK,两者不统一,这样就导致控制台的中文显示为乱码。

解决方法:

  • 1.使用SetConsoleOutputCP(65001)函数,这样控制台的编码输出就为UTF-8了,编码相同之后,输出的内容就没有乱码了。
  • 2.使用自定义的UTF-8转GBK的函数,保证字符串输出的时候是GBK的。别人写的转换函数
//网上找的函数
std::string GBKToUTF8(const std::string& strGBK)
{
    std::string strOutUTF8 = "";
    WCHAR* str1;//用来放gbk
    int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);
    str1 = new WCHAR[n];
    MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);//放宽字符的gbk,难道只有放到宽字符中才能转换吗 //好像是的
    n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
    char* str2 = new char[n];//用来放utf8
    WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);//不知为何放在多字节的utf8中
    strOutUTF8 = str2;//char直接赋值给String
    delete[]str1;
    str1 = NULL;
    delete[]str2;
    str2 = NULL;
    return strOutUTF8;
}
//自己模仿的
std::string UTF8ToGBK(const std::string&strUTF8) {
    std::string strOutGBK = "";
    WCHAR* wstr;
    int n = MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, NULL, 0);
    wstr = new WCHAR[n];
    MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, wstr, n);

    n = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
    char* str = new char[n];
    WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, n, NULL, NULL);
    strOutGBK = str;
    delete[] wstr;
    wstr = NULL;
    delete[] str;
    str = NULL;
    return strOutGBK;
}
  • 3.在命令行中(Command Line) 加入/source-charset:utf-8 /execution-charset:GBK,这样生成的控制台的编码格式就是GBK的。MSDN对/execution-charset的解释
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:50:46  更:2022-02-26 11:54:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:36:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码