mac上对gbk中文乱码修复

Mac(或类 Unix 系统)上批量把 GBK 编码的 .txt 文件转换成 UTF-8.


1.alias组合命令(当前使用)

# 对当前目录下*.txt文件批量格式化转换
alias winfmt='find *.txt -exec sh -c "iconv -f gbk -t utf-8 {} > {}.txt" \;'

2.输出到新文件

1
2
3
4
5
find . -name "*.txt" -exec sh -c '
for f; do
iconv -f gbk -t utf-8 "$f" -o "${f%.txt}.utf8.txt"
done
' sh {} +

说明:

  • ${f%.txt} 去掉原文件 .txt 后缀,生成 .utf8.txt
  • 保留原文件,防止覆盖导致数据丢失。

3.直接覆盖原文件(慎用)

1
2
3
4
5
6
find . -name "*.txt" -exec sh -c '
for f; do
tmp=$(mktemp)
iconv -f gbk -t utf-8 "$f" -o "$tmp" && mv "$tmp" "$f"
done
' sh {} +

说明:

  • 先写入临时文件,确保转换成功后再覆盖原文件,避免原文件丢失。

4.批量转换并修复常见乱码

如果文件里还有 Windows 换行符 \r\n,可以顺便处理:

1
2
3
4
5
6
find . -name "*.txt" -exec sh -c '
for f; do
tmp=$(mktemp)
iconv -f gbk -t utf-8 "$f" | tr -d "\r" > "$tmp" && mv "$tmp" "$f"
done
' sh {} +
  • tr -d "\r" 去掉 Windows 换行符。