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

作者 : 开心源码 本文共1193个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共222人阅读

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

  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? ?????±??¤o????¤′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    fidone

我们试图解读一下,其中 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.png8fb4dbdd32fc8fc8c5b6e13a7187d25a.gif

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

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » MacOS 下载的文件名字乱码问题

发表回复