VSCode使用Mingw64编译含中文文件名的C代码时,生成的可执行文件名乱码
解决MinGW64编译中文文件名C代码时可执行文件名乱码问题
问题原因
MinGW64默认采用GBK/GB2312编码处理文件名,而VSCode终端或当前系统环境如果用的是UTF-8编码,两者编码不匹配就会导致中文文件名在自动生成可执行文件时出现转码错误,最终显示乱码。
解决方法
1. 让MinGW64适配UTF-8编码
找到MinGW64的安装目录,进入mingw64\etc文件夹,编辑bash.bashrc文件,在末尾添加以下内容:
export LC_ALL=zh_CN.UTF-8 export LANG=zh_CN.UTF-8
保存后重启VSCode终端,再重新编译代码即可。
2. 手动指定可执行文件输出名
编译时不依赖默认的同名生成规则,手动指定输出文件名,用引号包裹中文名称避免解析错误。比如源码文件是中文测试.c,编译命令写:
gcc "中文测试.c" -o "中文测试.exe"
3. 调整VSCode终端编码为GBK
- 打开VSCode设置(快捷键
Ctrl+,),搜索terminal.integrated.defaultProfile.windows,选择你使用的MinGW终端(比如Git Bash)。 - 再搜索
terminal.integrated.shellArgs.windows,添加参数-c chcp 936(936对应GBK编码);或者每次编译前先在终端执行chcp 936切换编码,再执行编译命令。
4. 配置VSCode的tasks.json(如果用任务编译)
如果通过VSCode的tasks.json自动编译,要确保在tasks的args里明确指定输出文件名,示例配置片段:
{ "label": "gcc编译", "type": "shell", "command": "gcc", "args": [ "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ] }
这里的变量会自动匹配中文文件名,只要终端编码适配,就能正常生成中文名称的可执行文件。
内容的提问来源于stack exchange,提问作者hewei2723
相关产品推荐
相关产品推荐

