MacOS 下载的文件名字乱码问题
2019-01-14 本文已影响29人
千羽之城88
在网络上查了一圈,找到三个相关答案:
- 下载的文件名总是「乱码」?这里有各平台的解决方法 :
https://sspai.com/post/44360
Automator 流程:
https://cl.ly/2v1E3n3f1q2M - Mac OS X 下文件名乱码出现的原因和解决方法:
https://zzi.io/?p=275 - 预组字符:
https://zh.wikipedia.org/wiki/预组字符
乱码的例子:
FCPXæ??件ï¼?ç§?ç®?æ´?è¿·ä½ LOGOæ ?å¿?å±?示ç??头Minimal Logo Stings.dmg
纠正后:
FCPX插件:20个现代字幕条动画Modern Lower Thirds .dmg
参考一中的代码是关键:
for f in "$@"
do
fileName=$(basename ${f})
filePath=$(dirname ${f})
# 两种乱码类型 GBK、UTF-8
{ fileNewName=$(echo $fileName | iconv -f UTF-8-Mac -t latin1 | iconv -f gbk)
} || { fileNewName=$(echo $fileName | iconv -f UTF-8-Mac -t latin1)
}
# 文件名正常或乱码类型不属上述两种时,新文件名为空,则跳过
if [ -n "$fileNewName" ]; then
# 避免文件重复:如果已存在修复后的文件名,则在新文件名后加上随机字符串。
if [ -e ${filePath}/$fileNewName ]; then
mv "$f" "${filePath}/${fileNewName}-${RANDOM}"
else
mv "$f" "${filePath}/${fileNewName}"
fi
fi
done
我们试图解读一下,其中 iconv -f utf-8-mac -t latin1
是将字符先进行 decomposed
处理,接着 iconv -f gbk
,那么为什么要这么处理呢?因为MacOS默认使用 "precomposed" 的字符编码。什么是 decomposed
和 precomposed
呢?
瑞典语 的姓氏 Åström 可以有两种Unicode表示方式,第一种采用预组字符Å (U+00C5)与ö (U+00F6), 第二种采用可分解基本字符A (U+0041)与上圆圈 (附加符号) (U+030A) 以及o(U+006F)与分音符 (U+0308).
- Åström (U+00C5 U+0073 U+0074 U+0072 U+00F6 U+006D)
- Åström (U+0041 U+030A U+0073 U+0074 U+0072 U+006F U+0308 U+006D)
我们使用参考一的文件,下载后,双击安装,点击文件,右击就可以改名了。


还有一种乱码遇到的次数比较少,就不专门说了。