惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园_首页
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
Y
Y Combinator Blog
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
云风的 BLOG
云风的 BLOG
博客园 - 司徒正美
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
G
Google Developers Blog
Last Week in AI
Last Week in AI

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
下载的文件名总是「乱码」?这里有各平台的解决方法 - 少数派
2018-05-02 · via 少数派

说起「乱码」,没遇到过的电脑用户可能是极少的,尤其在国内中文环境下。暴露年龄的「烫烫烫」系列乱码已经绝迹,现如今遇到的往往是类似「%E9%AB%98%E9%A2%91」和「自在飞花轻似梦」的字符串。本文就这两种乱码情况分别给出解决方法。

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

%E9类型乱码

这种情况往往是由于网站和浏览器之间存在兼容性问题导致的,我在 macOS 英文系统上使用 Firefox 下载网盘中的文件时就遇到过,这些形如「%E9%AB%98%E9%A2%91」的字符串实际上是文件名的 URL 编码。下面介绍各系统平台上的解决方法。

macOS 系统

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

首先,下载「♲ 文件名 UrlDecode.workflow.zip」,解压后双击安装。

null

然后,右键单击需要处理的文件,选择服务子菜单中的 ♲ 文件名 UrlDecode,完毕。

使用演示
使用演示

这个服务不需要网络,支持批量处理多个文件或文件夹。用 Automator 打开会发现其原理很简单,只有「运行 Shell 脚本」的操作,其中的 Shell 代码为:

# 调用 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

Windows 系统

相比 macOS, Windows 缺乏友好、易用的自动化工具。在安装 Python 后,可以利用批处理命令调用代码python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"进行文件名修复。但是考虑到该过程略复杂,该类乱码出现频率较低,所以这里不提供工具,而是介绍如何利用在线网站解决问题。

  1. 复制文件的乱码名称,如「%E9%AB%98%E9%A2%91」。
  2. 打开在线解码网站。粘贴到输入框,点击下方的「UrlDecode 解码」,即可得到对应中文。
  3. 复制解码后的中文,重命名文件。

Linux 系统

Linux 各发行版和桌面环境的差异较大,且用户折腾能力较强,这里就不给出具体工具了。可根据自己的实际情况,利用上方的 Shell 代码尝试解决。

iOS 与 Android 系统

手机系统上同样难以做到 macOS 上的「一键修复」,推荐使用上文中 Windows 系统小节的在线网站解决。


自å 类型乱码

这种乱码的形成过程基本相似,但其中涉及的编码却各有不同,错综复杂。考虑到国内电脑用户遇到的情况,多出现于从国内的政府、院校、企业等网站下载文件时,一般属于同一种类型,即 GBK 编码解码错误。下面将针对此种类型给出解决方法。

首先,我以经常出现乱码的知网文献下载为例,使用各系统及浏览器进行测试。结果如下:

  • Win10 1803版本 中文系统 Edge 浏览器下载文献的文件名为乱码IE 浏览器下载文件名正常Chrome 浏览器下载文件名为乱码
  • macOS 10.13.4 中文系统 Safari 与 Chrome 浏览器下载文件名均正常英文系统中,两种浏览器下载文件名均为乱码
  • Ubuntu 16.04 系统,环境变量LC_ALL="en_US.UTF-8"情况下,Firefox 浏览器下载文件名为乱码

需要说明的是:上述结果仅表明使用这些系统、语言、浏览器组合进行下载时的一般情况,并不能表明该组合下载时完全有或无乱码。这是由于乱码的产生与否,是由系统、浏览器、网站三方共同决定的。

macOS 系统

这里,我同样是使用 Automator 编写了一个文件服务,无需网络,支持批量处理。下载「å 修复文件名乱码.workflow.zip」,解压后双击安装。

服务安装
服务安装

然后,右键单击需要处理的文件,选择服务子菜单中的 å 修复文件名乱码,稍等即可。如果没有这个服务项,就重启试试。

修复演示
修复演示

用 Automator 打开会发现其原理很简单,只有「运行 Shell 脚本」的操作,其中的 Shell 代码为:

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

可以看到上述代码是在解决两种乱码情况,其中 GBK 乱码是我们常遇到的,UTF-8 类型的则是由读者在下方评论中提出的,较为少见,顺手加上。

Windows 系统

首先,下载 Python ,双击打开,如下图所示。先勾选「Add Python 3.6 to PATH」,然后点击「Install Now」进行安装,一路下一步。

Win10安装Python
Win10安装Python

然后,下载「文件名乱码修复.bat」,随意放在你喜欢的位置。需要修复文件名乱码时,拖动文件到 文件名乱码修复.bat 上方后释放即可。

Win乱码修复
Win乱码修复

「文件名乱码修复.bat」的内容很简单,只有一句话:

python -c "import sys,os;fp=os.path.dirname(sys.argv[1]);fn=os.path.basename(sys.argv[1]);os.rename(sys.argv[1],os.path.join(fp,fn.encode('latin1').decode('gbk')))" %1

Linux 系统

由于 Linux 各发行版及桌面环境差异较大,这里仅给出核心命令。

echo 文件名乱码 | iconv -t latin1 | iconv -f gbk

通过运行该命令,可得到正常的文件名称,复制后重命名即可。

iOS 与 Android 系统

如果在 iOS、Android 上遇到类似于「自在飞花轻似梦」文件名乱码,那么最好在电脑上重新下载后再修复名称。这是由于移动系统上对文件的处理,不像电脑系统上那么方便。而且也应该避免复制文件名称中的乱码文字,因为乱码中往往存在不可见字符,在复制粘贴过程中可能出现遗漏或错误。

另外,如果繁体中文、日语等语言文字的电脑用户遇到类似的文件名乱码问题,可将本文代码中的gbk改为相应语言的编码名称以尝试解决,如繁体中文 BIG5、日文 JIS。

结语

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

如果你想了解第一种乱码相关的 URL 编码,可以看 这篇文章
第二种乱码相关的字符编码知识,则推荐阅读:

> 下载 少数派 iOS 客户端、关注 少数派公众号,让智能设备更好用 ⚡️