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
相关产品推荐
相关产品推荐

