C++ 控制台程序中输出UTF8字符乱码问题解决方法

    xiaoxiao2021-12-14  22

    1. 使用代码纠正

    // 控制台显示乱码纠正 system("chcp 65001"); //设置字符集 (使用SetConsoleCP(65001)设置无效,原因未知) CONSOLE_FONT_INFOEX info = { 0 }; // 以下设置字体 info.cbSize = sizeof(info); info.dwFontSize.Y = 16; // leave X as zero info.FontWeight = FW_NORMAL; wcscpy(info.FaceName, L"Consolas"); SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, &info);

    2. 不使用代码

    手动启动一个控制台程序,启动之后设置编码为utf8

    命令:chcp 65001

    然后,设置字体为Consolas

    代码例子:

    #include <stdio.h> #include <stdlib.h> #include <wchar.h> #ifdef _WIN32 #include <Windows.h> #endif /** 为保证控制台程序输出中文不乱码: 1、xxx.c xxx.cpp使用utf-8编码,来支持linux和window的中文。 2、window cmd需要进行下面设置 */ int main(void) { #ifdef _WIN32 //http://m.blog.csdn.net/article/details?id=52789570 //控制台显示乱码纠正 // system("chcp 65001"); //设置字符集(使用SetConsoleCP(65001)设置无效,原因未知) SetConsoleOutputCP (65001); CONSOLE_FONT_INFOEX info = { 0 }; // 以下设置字体来支持中文显示。 info.cbSize = sizeof(info); info.dwFontSize.Y = 16; // leave X as zero info.FontWeight = FW_NORMAL; wcscpy(info.FaceName, L"Consolas"); SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, &info); #endif printf("Hello World!\n"); printf("测试中文!\n"); printf("我是中文!\n"); printf("Hello World!\n"); getchar(); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-969834.html

    最新回复(0)