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

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

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

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

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

macOS 系统

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

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

下图所示
在这里插入图片描述

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

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

# 调用 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+ 版本

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:

for f in "$@"
do
    fileName=$(basename ${f})
    filePath=$(dirname ${f})

    # 两种乱码类型 GBKUTF-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+ 版本

import os
import shutil
import random
import sys

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

    # 两种乱码类型 GBKUTF-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 类型较为少见,顺手加上。
乱码的出现总是让人烦心的。希望本文介绍的方法能够帮助你解决遇到的问题

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

原文地址:https://blog.csdn.net/Gas_station/article/details/134683838

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_37102.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注