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

作者: 千羽之城88 | 来源:发表于2019-01-14 19:20 被阅读29次

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

    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

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/wabjdqtx.html