Git切换dev分支时UTF-8转UTF-16LE-BOM失败,*.rc文件损坏求解
解决Git处理UTF-16LE-BOM编码资源文件的错误问题
问题根源
你在dev分支直接将*.rc文件转为UTF-16LE-BOM并提交,同时配置了working-tree-encoding=UTF-16LE-BOM,但这个配置的逻辑是Git仓库内部存储UTF-8编码文件,检出到工作区时自动转为UTF-16LE-BOM。而你实际提交的是UTF-16编码文件,Git会错误地将其当作UTF-8处理,导致编码转换失败。
步骤1:修复当前损坏的工作区
执行命令重置工作区到正确状态,丢弃错误转换的文件:
git reset --hard HEAD git rm --cached .gitattributes
步骤2:修正.gitattributes配置
你需要让Git识别*.rc文件本身的编码,而非强制转换编码。修改.gitattributes内容为:
**/*.rc text encoding=UTF-16LE-BOM eol=CRLF
encoding=UTF-16LE-BOM:告诉Git该类文件的实际编码,用于diff解析eol=CRLF:确保工作区文件使用CRLF行尾
步骤3:重新提交正确的文件和配置
- 批量验证所有*.rc文件确实是带BOM的UTF-16LE编码、CRLF行尾(可通过Notepad++等工具确认)
- 暂存修改:
git add **/*.rc .gitattributes - 提交变更:
git commit -m "统一*.rc为UTF-16LE-BOM编码,配置Git支持diff"
步骤4:验证克隆后的行为
重新克隆仓库并切换到dev分支,此时Git会正确识别*.rc的编码,不会触发错误转换,同时能正常生成diff。
内容的提问来源于stack exchange,提问作者elo
相关产品推荐
相关产品推荐

