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

解决终端编译时乱码问题

解决终端编译时乱码问题

在 Windows 下,用 g++ 编译出的 exe 运行时中文乱码,99 % 是 “源码编码”“终端编码” 不一致造成的。
下面给出 3 种最常用、最简单的解决方案,你任选其一即可。


方案 1:编译时直接把字符串转成 GBK(推荐)

把源码保存成 UTF-8,在编译命令里加 2 个参数:

g++ 3-最佳品牌.cpp -o 3-最佳品牌.exe \-finput-charset=UTF-8 \-fexec-charset=GBK

解释

  • -finput-charset=UTF-8 告诉 g++ 源码是 UTF-8。
  • -fexec-charset=GBK 把程序里的字符串常量按 GBK 编码写入 exe。
    cmd / PowerShell 默认就是 GBK,所以显示正常,无需改终端

方案 2:不改源码编码,改终端为 UTF-8

  1. 源码保持 UTF-8编译命令不加任何额外参数(或只加 -finput-charset=UTF-8)。
  2. 运行前在终端敲:
chcp 65001

终端就被临时切到 UTF-8,随后运行 exe 即可正常显示中文。
(也可以把 chcp 65001 && 3-最佳品牌.exe 做成一条快捷命令)


方案 3:直接把源码改成 GBK

用 VS Code / Notepad++ → 另存为 → 编码选 GB2312/GBK,然后

g++ 3-最佳品牌.cpp -o 3-最佳品牌.exe

即可,默认就能匹配终端编码。
缺点:源码换平台(Linux/macOS)时可能出现反向乱码。


一键懒人法(VS Code tasks.json)

如果你用 VS Code 的 tasks.json 一键编译,把这两句插到 "args" 数组里即可:

"-finput-charset=UTF-8",
"-fexec-charset=GBK"

完整片段示例:

"args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe","-finput-charset=UTF-8","-fexec-charset=GBK"
]

保存后 Ctrl+Shift+B 重新编译,运行不再乱码。

http://www.vanclimg.com/news/1808.html

相关文章:

  • 基于人工智能算法的小麦全基因组选择育种技术研究
  • Android 12 S 系统开机流程分析 - SetupSelinux(二)
  • Springboot全局异常捕获
  • CF 复健记录
  • [Unity] 良好手感的人物移动速率计算
  • 比特彗星常见问题-用户列表显示问题
  • 「补档」 像素帝的比特彗星教程
  • 《春王正月》
  • 数学积累(强基2 例65~82)
  • 新蛋白标注流程
  • 比特彗星常见问题-设置视频预览播放器
  • 开发AppleScript时查看程序UI元素的工具
  • Hyperlane框架的高级特性深度解析:从零拷贝到宏系统的完美融合(7601)
  • 实战项目:文件分块上传系统(2069)
  • Web服务器性能大比拼:谁才是真正的速度之王(0106)
  • Hyperlane性能调优秘籍:从毫秒级响应到百万QPS的优化之路(5333)
  • TCP连接优化的实战经验(0513)
  • 计算几何
  • JAVA语言学习总结(第28天)
  • GTMKubeJS轮子和技巧分享
  • OI集训 Day13
  • 格式化字符串
  • Java学习Day29
  • 待办
  • 20250729 沪锡
  • 内核模块支持
  • 最大公约数最小公倍数与周期
  • LLM的参数量是什么意思
  • 平衡树Splay - AC
  • 7.15-7.28软路由搭建