解决 Mac 的 txt 文件乱码

解决 Mac 的 txt 文件乱码_第1张图片
image.png

缘起

经常遇到 txt 文件在 Mac 上显示乱码, 如上图所示.


解决

1. 单个乱码文件的转换

使用 Shell 的 iconv 命令来转换文件编码, 其语法是:

iconv -f encoding -t encoding sourcefile > destinationfile

例如, 想把 GB18030 编码的 A 文件( txt 格式), 转换为 UTF-8 编码,并存入文件 B:

iconv -f GB18030 -t UTF8 A.txt > B.txt

注意:
如果文件名带"空格", 在命令行操作时, 需要在"空格"前面加上"转义字符 \", 比如 "my file.txt" 文件在命令行中需要用 my\ file.txt 来指代.
如果你不理解"转义字符", 那么建议你先把文件名中的"空格"去掉, 或者直接使用"下划线"替代"空格". 比如, 把 "my file.txt" 文件改名为 "my_file.txt"

PS. 如何得知源文件的编码格式?
可以尝试使用 file --mime-encoding 命令来查看源文件的编码格式.
同时, 根据自己的尝试和网上的资料, 大部分乱码的 txt 文件编码为 GB18030.


2. 乱码文件的批量转换

将需要转码的 txt 文件放在一个文件夹中, 在命令行下, 进入文件夹后执行:

find *.txt -exec sh -c "iconv -f GB18030 -t UTF8 {} > {}.txt" \;

其作用是: 查找后缀为 txt 的文件,将其编码从 GB18030 转化为 UTF8


乱码问题的历史原因

请参考我的另一篇文章 编码问题


文章历史

  • 2017/01/29 (第一次发布)
  • 2017/05/01 增加提醒 - "带空格的文件名会识别错误";
  • 2017/06/11 修改"带空格的文件名"的描述; 将代码中的注释剥离出来, 避免信息被混淆;
  • 2018/04/30 润色; 删除file --mime-encoding命令的报错信息, 减少不必要的认知负担; 给标题添加序号, 更方便阅读; 添加了"乱码问题的历史原因"章节;

如果你觉得我的文章对你有用, 请打个"喜欢", 或者给些改进的建议 _

你可能感兴趣的:(解决 Mac 的 txt 文件乱码)