Windows 10下GitBash运行ICONV命令无预期挂起的原因及解决方法
根因说明
你执行的iconv -f utf-8 -t utf-16le | clip.exe挂起的核心原因是iconv默认从标准输入读取待转换内容,你没有主动传入输入内容也没有发送输入结束信号,进程会持续处于等待输入的状态,并非命令本身报错或者系统异常。
解决方法
- 转换指定文件内容:直接给iconv传入目标文件路径,命令修改为:
执行后会直接完成转码并将结果写入系统剪贴板,不会出现挂起问题。iconv -f utf-8 -t utf-16le 待转换的文件路径 | clip.exe - 转换手动输入的内容:执行原命令后输入你要转换的文本,输入完成后按下Git Bash的EOF快捷键
Ctrl+D,iconv收到结束信号后会自动完成转码并退出进程。 - 快速测试命令可用性:直接通过管道给iconv传入测试内容,执行命令:
执行完毕后即可在剪贴板获取转码后的内容。echo "测试用文本内容" | iconv -f utf-8 -t utf-16le | clip.exe
调试排查步骤
如果按上述操作仍然存在挂起问题,可按以下步骤定位异常点:
- 单独执行
iconv -f utf-8 -t utf-16le 可访问的测试文本文件,确认iconv本身可以正常完成转码,排除iconv自身故障。 - 单独执行
echo "测试内容" | clip.exe,执行后查看剪贴板是否能正常粘贴对应内容,排除clip.exe或者Git Bash与Windows系统程序的管道适配问题。 - 若确认是管道适配问题,可拆分命令分步执行:先将转码结果输出到临时文件,再将临时文件内容写入剪贴板:
iconv -f utf-8 -t utf-16le 待转换文件 > temp_utf16le.txt cat temp_utf16le.txt | clip.exe
内容的提问来源于stack exchange,提问作者Vicky Dev
相关产品推荐
相关产品推荐

