Mac 浏览器下载的文件名总是「乱码」

如果可以实现记得点赞分享,谢谢老铁~

本文所说的方法是在出现文件名乱码情况下,如何恢复文件名的正确中文名称,并非一劳永逸地避免乱码的出现。这是由于下载文件名称乱码的出现,往往是系统、浏览器、网站三方面因素共同影响导致的,错综复杂。想要避免乱码的出现,只能根据具体的情况,对个人的系统或浏览器做出针对特定网站的调整配置。

PS: 如果你是一个开发者,你完全可以让后台人员处理下载文件名称包括内容的乱码问题。

因为本人用的是MAC,所以只诠释MAC系统。

macOS 系统

macOS系统自带强大的自动化支持,如 Automator 和 AppleScript。这里,我使用 Automator 编写了一个文件服务,使用方法:

1.右键单击需要处理的文件,进入创建服务

如下图所示:

2.这个服务不需要网络,支持批量处理多个文件或文件夹。只有「运行 Shell 脚本」的操作,其中的 Shell 代码为:

PS: 这里要优先下载好 python 分两个版本,根据自身需求进行选择

Python版本

typescript 复制代码
# 调用 Python 内置模块进行解码
alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'

# 遍历选择的文件列表,进行重命名
for f in "$@"
do
    newName=$(urldecode "$f")
    mv "$f" "$newName"
done

Python 3.0+ 版本

typescript 复制代码
import sys
import urllib.parse
import os
import shutil

def urldecode(url):
    return urllib.parse.unquote_plus(url)

for f in sys.argv[1:]:
    newName = urldecode(f)
    shutil.move(f, newName)

将上述对应的脚本复制粘贴到下图所示当中:

3.最后保存,命名服务名称为 UrlDecode

再次右键打开你需要解析的文件,如图所示:

找到你创建好的服务,如果找不到请重启电脑。


到这里你已经解决了大部分文件名乱码的情况,哈哈哈哈,老铁点个赞收藏。

2. 自å 类型乱码

还有其他的情况,macOS 10.13.4 中文系统 Safari 与 Chrome 浏览器下载文件名均正常。英文系统中,两种浏览器下载文件名均为乱码。

1.按照上面的步骤创建一个新的服务名称为 å 修复文件名乱码

一样分两个Python版本

Pyhton:

typescript 复制代码
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

Python 3.0+ 版本

typescript 复制代码
import os
import shutil
import random
import sys

for f in sys.argv[1:]:
    fileName = os.path.basename(f)
    filePath = os.path.dirname(f)

    # 两种乱码类型 GBK、UTF-8
    fileNewName = fileName.encode('latin1').decode('gbk') if fileName.encode('utf-8').decode('utf-8', 'ignore') != fileName else fileName.encode('utf-8').decode('utf-8', 'ignore')

    # 文件名正常或乱码类型不属于上述两种时,新文件名为空,则跳过
    if fileNewName:
        # 避免文件重复:如果已存在修复后的文件名,则在新文件名后加上随机字符串。
        if os.path.exists(os.path.join(filePath, fileNewName)):
            newFileName = f"{fileNewName}-{random.randint(0, 99999)}"
        else:
            newFileName = fileNewName

        shutil.move(f, os.path.join(filePath, newFileName))
2.记得保存文件服务就可以了,完毕。
3.结语

可以看到上述代码是在解决两种乱码情况,其中 GBK 乱码是我们常遇到的,UTF-8 类型较为少见,顺手加上。

乱码的出现总是让人烦心的。希望本文介绍的方法能够帮助你解决遇到的问题。

收工!谢谢老铁们的点赞收藏~

相关推荐
AUV11073 天前
CleanClip for Mac 剪切板 粘贴工具 历史记录 安装(保姆级教程,新手小白轻松上手)
macos·mac·剪贴板·clipboard·剪贴板增强·复制历史·最强应用
星空爱忆6 天前
在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?
mac·parallels
星空爱忆6 天前
在 Mac 上安装虚拟机怎么样,安装虚拟机与直接安装 Windows 系统有区别吗?
windows·mac·parallels
晓风残月Yuperman7 天前
mac 电脑 git credential osxkeychain问题之二
git·mac
EthanXone1968 天前
【学习笔记】SSL密码套件之哈希
密码学·哈希算法·ssl·mac·密码套件·poly1305·aead
slunlun10 天前
Mac工程动态库配置和加载探究
macos·mac·dylib·dyld
Mac分享吧10 天前
Luminar Neo for Mac智能图像处理软件【操作简单,轻松上手】
图像处理·经验分享·笔记·macos·mac·软件需求·图片
AUV110711 天前
CleanClip for mac(苹果电脑剪切板管理器)
macos·mac·效率工具·剪贴板·剪贴板记录·clipboard·剪贴板历史
晓风残月Yuperman11 天前
mac 电脑 git credential osxkeychain问题
git·mac
老豆811 天前
[ios]准备好app后使用xcode发布ios操作
ios·mac·xcode