我试图让 git 将 UTF-16 识别为文本,以允许我本地比较和修补文本,但我无法获取textconv
参数来工作。
我可以手动调用
iconv -f utf-16 -t utf-8 some-utf-16-file.rc
一切都很好。但是如果我按如下方式配置 .gitconfig
[diff "utf16"]
textconv = "iconv -f utf-16le -t utf-8"
和我的 .gitattributes:
# Custom for MFC
*.rc text eol=crlf diff=utf16
但是,如果我然后如果我跑git diff
,显示如下:
iconv: C:/Users/Mahmoud/AppData/Local/Temp/IjLBZ8_OemKey.rc:104:1: incomplete character or shift sequence
通过 procmon,我能够在创建此进程时追踪它:
sh -c "iconv.exe -f utf-16le -t utf-8 \"$@\"" "iconv.exe -f utf-16le -t utf-8" C:/Users/Mahmoud/AppData/Local/Temp/JLOkVa_OemKey.rc
...我实际上可以很好地运行(不过在实际文件上)。
有任何想法吗?
(请注意,我知道让 git 使用 UTF-16 的各种解决方案。我专门试图解决这个问题:为什么 iconv 本身可以工作,但在被 git 调用时却不起作用。另外,这个最初是在尝试“重复”问题中的链接解决方案之一时遇到错误。谢谢大家。)