Mac优雅使用指南程序员Mac os 上个类群问题解决

MacOS 下载的文件名字乱码问题

2019-01-14  本文已影响29人  千羽之城88

在网络上查了一圈,找到三个相关答案:

  1. 下载的文件名总是「乱码」?这里有各平台的解决方法 :
    https://sspai.com/post/44360
    Automator 流程:
    https://cl.ly/2v1E3n3f1q2M
  2. Mac OS X 下文件名乱码出现的原因和解决方法:
    https://zzi.io/?p=275
  3. 预组字符:
    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" 的字符编码。什么是 decomposedprecomposed 呢?

瑞典语 的姓氏 Åström 可以有两种Unicode表示方式,第一种采用预组字符Å (U+00C5)与ö (U+00F6), 第二种采用可分解基本字符A (U+0041)与上圆圈 (附加符号) (U+030A) 以及o(U+006F)与分音符 (U+0308).

  1. Åström (U+00C5 U+0073 U+0074 U+0072 U+00F6 U+006D)
  2. Åström (U+0041 U+030A U+0073 U+0074 U+0072 U+006F U+0308 U+006D)

我们使用参考一的文件,下载后,双击安装,点击文件,右击就可以改名了。

image.png 8fb4dbdd32fc8fc8c5b6e13a7187d25a.gif

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

上一篇 下一篇

猜你喜欢

热点阅读