Firefox下载中文名文件为乱码的一种解决方法

#环境

  • os: OpenSUSE Tumbleweed
  • pc: Apple macbook 13’ pro 2015

#故障描述
从百度网盘直接下载的中文pdf文件显示为乱码,具体是显示url编码后的中文名

#修复
查看当前目录下的文件

1
2
3
4
5
6
7
tianfei@openSuSeLinux:~/Downloads/pdf> ll
total 61420
-rw-r--r-- 1 tianfei users 12848877 Jan 25 10:10 %5B%E7%91%9E%E5%85%B8%E5%8F%B2%28%E4%B8%8A%E4%B8%8B%E5%86%8C%29%5D.%28%E7%91%9E%E5%85%B8%29%E5%AE%89%E5%BE%B7%E7%94%9F.%E6%89%AB%E6%8F%8F%E7%89%88.pdf
-rw-r--r-- 1 tianfei users 6683784 Jan 12 14:52 Docker in Practice.pdf
-rw-r--r-- 1 tianfei users 283995 Jan 16 11:50 dotguide.pdf
-rw-r--r-- 1 tianfei users 0 Jan 23 11:35 %E6%9C%9D%E9%B2%9C%E7%AE%80%E5%8F%B2.pdf
-rw-r--r-- 1 tianfei users 43070424 Jan 19 17:38 亚洲历史 许海山.pdf

其中第一,四个pdf文件显示乱码,写了一个url解码脚本进行修复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(venv3.6) tianfei@openSuSeLinux:~/Downloads/pdf> cat ~/devops/ScriptsForTianfei/decode_urlcode_filename.py
#!/usr/bin/env python3
# -*- coding:UTF-8 -*-

import os
import urllib.parse


def convert_filename(files):
for file in files:
unquote_file_name = urllib.parse.unquote(file)
os.rename(file, unquote_file_name)


if __name__ == '__main__':
files = os.listdir()
convert_filename(files)

在当前目录下执行脚本之后,文件名显示正确的UTF-8格式

1
2
3
4
5
6
7
(venv3.6) tianfei@openSuSeLinux:~/Downloads/pdf> ll
total 61420
-rw-r--r-- 1 tianfei users 6683784 Jan 12 14:52 Docker in Practice.pdf
-rw-r--r-- 1 tianfei users 283995 Jan 16 11:50 dotguide.pdf
-rw-r--r-- 1 tianfei users 12848877 Jan 25 10:10 [瑞典史(上下册)].(瑞典)安德生.扫描版.pdf
-rw-r--r-- 1 tianfei users 43070424 Jan 19 17:38 亚洲历史 许海山.pdf
-rw-r--r-- 1 tianfei users 0 Jan 23 11:35 朝鲜简史.pdf

%5B%E7%91%9E%E5%85%B8%E5%8F%B2%28%E4%B8%8A%E4%B8%8B%E5%86%8C%29%5D.%28%E7%91%9E%E5%85%B8%29%E5%AE%89%E5%BE%B7%E7%94%9F.%E6%89%AB%E6%8F%8F%E7%89%88.pdf
显示为[瑞典史(上下册)].(瑞典)安德生.扫描版.pdf,%E6%9C%9D%E9%B2%9C%E7%AE%80%E5%8F%B2.pdf显示为朝鲜简史.pdf

脚本下载在我的github:

https://github.com/talenhao/ScriptsForTianfei/tree/master/decode_urlcode_filename

坚持原创技术分享,您的支持将鼓励我继续创作!