当前位置: 首页 > news >正文

C++ 中文输出乱码?一篇博客彻底搞定

1. 问题背景

今天在群里看到一段挺有趣的 C++ 代码,用模板方法模式描述传统放羊娃与现代放羊娃的一生:

每天放羊 → 卖羊赚钱 → 结婚 → 生孩子 → 孩子继续放羊……

代码写得没毛病,可一运行,终端里却蹦出一堆“口口口”或“烫烫烫”的乱码。

很多同学第一反应是“是不是代码写错了?”

其实,90% 的 C++ 中文乱码都不是代码问题,而是“编码不一致”导致的显示错位


2. 复现场景

把简化后的代码贴出来,方便大家复现:

代码语言:cpp

AI代码解释

#include <iostream> int main() { std::cout << "每天放羊..." << std::endl; std::cout << "卖羊赚钱..." << std::endl; std::cout << "用钱娶媳妇..." << std::endl; return 0; }

期望输出:

代码语言:txt

AI代码解释

每天放羊... 卖羊赚钱... 用钱娶媳妇...

实际输出(Windows默认 cmd):

代码语言:txt

AI代码解释

ÿþÿÿÿÿÿÿÿÿ... ¡¡¡¡... ÓÃǮȢϱ¸¾...

3. 乱码成因

一句话总结:“源文件编码” ≠ “控制台编码”

环节

常见编码

源文件(.cpp)

UTF-8(无 BOM)

Windows 控制台

默认代码页 936(GBK)

当编译器把 UTF-8 下的(0xE6 0xAF 0x8F)原封不动地交给控制台时,控制台按 GBK 去解码,于是 0xE6AF 被当成一个 GBK 字符,自然面目全非。

http://www.jsqmd.com/news/478961/

相关文章:

  • 5个技巧让Unity资源提取效率提升10倍:告别编辑器依赖的轻量级解决方案
  • (五)Spring Cloud Alibaba 2023.x:Seata 分布式事务配置与实现
  • LangGraph.js 核心概念:State / Node / Edge 一文讲透
  • AI智能体编码 skeptic 的 Rust 性能优化实战
  • 198.arctan与arctan2鉴相器的区别
  • Claude生成式UI的逆向与利用
  • YOLOv13全网首发:CVPR2026 Transformer注意力 | BinaryAttention 1-bit注意力,推理提速100%,超越FlashAttention2
  • QQ空间记忆守护:用技术为青春时光建一座数字档案馆
  • C++】面向对象编程:继承与多态的魅力
  • Embedding和向量数据库
  • 深入剖析C++文件操作的底层机制
  • 字符串反转和统计字符串中字符类型及频次
  • [特殊字符] 龍魂系统执行日志|2026-03-13|底层宪法数据库落地·30天最后宣言·打破的根在道统不在霸权
  • 精准删除:掌握SQL中的DELETE语句
  • OmoFun 1.1.4 | 追番神器官方APP下载.官网入口
  • Python 数据结构示例
  • Tensflow学习第T1周打卡
  • test_1_2026
  • 基于单片机的蔬菜大棚数据采集系统的设计
  • 【day52】
  • 端侧AI 的定义与发展背景
  • 03.SpringAI 使用FunctionCalling实现智能客服
  • 基于单片机的土壤墒情监测系统的设计与实现
  • OpenClaw技术架构深度解析:原理、核心与源码全面解读
  • 2026年3月口碑好的压电式传感器厂家推荐TOP - 品牌推荐用户报道者
  • 【亲测】2026年OpenClaw(Clawdbot)零技术点几下秒级安装教程
  • 看不见的飓风:电动汽车如何重塑全球经济版图
  • 不平衡电网电压下 VSG 如何控制三相电流平衡
  • 【2026年最新600套毕设项目分享】springboot“校园淘”二手交易平台(14127)
  • 【2026年最新600套毕设项目分享】springboot数字博物馆系统(14128)