You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git log --encoding参数无效致STM32CubeMX项目编译报错如何解决?

解决Windows下Git日志生成ISO 8859-1编码头文件的问题

问题根源

Windows命令提示符(cmd)默认用>重定向生成文件时,会采用UTF-16LE编码并添加BOM(开头的ÿþ就是UTF-16LE的BOM标识),这和项目要求的ISO 8859-1编码不兼容,导致编译报错。

解决方案

方法1:修改cmd输出编码后执行Git命令

先将cmd的输出编码切换为ISO 8859-1对应的代码页(28591),再执行Git命令生成头文件:

chcp 28591 >nul && git log -n 1 --date=format:"%H:%M %d/%m/%Y" --encoding=ISO-8859-1 --pretty=format:"#ifndef GITCOMMIT_H_%n#define GITCOMMIT_H_%n%n#define AUTHOR_NAME '%an'%n#define COMMIT_HASH '%h'%n#define DATE '%cd'%n%n#endif" > src\gitcommit.h
  • chcp 28591:将cmd的输出编码切换为ISO 8859-1
  • >nul:屏蔽chcp命令的输出提示,避免干扰头文件内容
  • 后续Git命令保持原参数,此时>重定向会以ISO 8859-1编码生成文件,无BOM

方法2:用PowerShell的Out-File指定编码

如果用PowerShell执行命令,可以直接通过Out-File指定输出编码:

git log -n 1 --date=format:"%H:%M %d/%m/%Y" --encoding=ISO-8859-1 --pretty=format:"#ifndef GITCOMMIT_H_%n#define GITCOMMIT_H_%n%n#define AUTHOR_NAME '%an'%n#define COMMIT_HASH '%h'%n#define DATE '%cd'%n%n#endif" | Out-File -FilePath src\gitcommit.h -Encoding ISO-8859-1 -NoNewline
  • -Encoding ISO-8859-1:强制输出文件采用ISO 8859-1编码
  • -NoNewline:避免PowerShell自动在文件末尾添加额外换行符

注意事项

  • 确保Git命令中的--encoding=ISO-8859-1参数保留,它会让Git将日志内容转换为ISO 8859-1编码输出,和文件编码保持一致。

内容的提问来源于stack exchange,提问作者Clément

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:52:48