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

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

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

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 "$@"
donewName=$(urldecode "$f")mv "$f" "$newName"
done

Python 3.0+ 版本

import sys
import urllib.parse
import os
import shutildef 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 "$@"
dofileName=$(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 ]; thenmv "$f" "${filePath}/${fileNewName}-${RANDOM}"elsemv "$f" "${filePath}/${fileNewName}"fifi
done

Python 3.0+ 版本

import os
import shutil
import random
import sysfor f in sys.argv[1:]:fileName = os.path.basename(f)filePath = os.path.dirname(f)# 两种乱码类型 GBKUTF-8fileNewName = 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 = fileNewNameshutil.move(f, os.path.join(filePath, newFileName))
2.记得保存文件服务就可以了,完毕。

在这里插入图片描述

3.结语

可以看到上述代码是在解决两种乱码情况,其中 GBK 乱码是我们常遇到的,UTF-8 类型较为少见,顺手加上。
乱码的出现总是让人烦心的。希望本文介绍的方法能够帮助你解决遇到的问题。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

W2311294-万宾科技可燃气体监测仪怎么进行数据监测

万宾科技可燃气体监测仪怎么进行数据监测 燃气是现代城市之中重要的能源,它已经渗透到城市生活的方方面面,对燃气管网的管理也在考验着政府人员的工作能力。燃气管网的安全运行和城市的安全和人民的生活直接挂钩。为了及时掌握燃气管网的运行状态&#x…

运维笔记111

运维笔记 Navicat中查询指定字段名所在的表名tomcat设置JVM的初始堆内存修改catalina.sh文件修改完保存并关闭tomcat启动tomcat 查询数据库连接数查询是否存在死锁 Navicat中查询指定字段名所在的表名 SELECT * FROM information_schema.COLUMNS WHERE COLUMN_NAME‘替换成你要…

基于docker的onlyoffice使用--运行JavaSpringExample

背景 我之前看到有开源项目很好地集成了onlyoffice,效果要比kkfilepreview好(应当说应用场景不太一样)。本文是在window10环境,安装完Docker Desktop的基础上运行onlyoffice,并利用官网JavaSpringExample进行了集成。 …

大数据之 Hadoop

hadoop主要解决:海量数据的存储和海量数据的分析计算 hadoop发展历史 Google是hadoop的思想之源(Google在大数据方面的三篇论文) 2006年3月,Map-reduce和Nutch Distributed File System(NDFS)分别被纳入到Hadoop项目&#xff0c…

Delphi语言怎样对自己定义类进行持久化保存及恢复 (性能远比json/xml高)

Delphi的RTL自身就带有一套非常好的资源持久化保存(IDE设计窗口时,保存为DFM格式及编译到EXE里面的资源文件)及恢复机制(EXE启动时对窗口资源的载入),那么应不是必需再额外用xml/json格式保存程序的參数了。…

90基于matlab的无迹卡尔曼滤波器参数估计的非线性最小二乘优化

基于matlab的无迹卡尔曼滤波器参数估计的非线性最小二乘优化,数据可更换自己的,程序已调通,可直接运行。 90matlab无迹卡尔曼滤波器参数估计 (xiaohongshu.com)

基于社区电商的Redis缓存架构-缓存数据库双写、高并发场景下优化

基于社区电商的Redis缓存架构 首先来讲一下 Feed 流的含义: Feed 流指的是当我们进入 APP 之后,APP 要做一个 Feed 行为,即主动的在 APP 内提供各种各样的内容给我们 在电商 APP 首页,不停在首页向下拉,那么每次拉的…

SQL Server 2008 使用concat报错

SQL Server 2008 使用concat报错 在 SQL Server中,CONCAT 函数是从 SQL Server 2012 版本开始引入的,所以在 SQL Server 2008 中使用 CONCAT 函数会导致错误。 如果你想要连接字符串,有几种替代方法可以考虑: 使用 运算符&…

CBV源码

views: from django.views import Viewclass MyLogin(View):def get(self,request):return HttpResponse(get方法)def post(self,request):return HttpResponse(post方法) urls: path(MyLogin,views.MyLogin.as_view()), CBV源码分析: as_view()为入口 path(MyLogin,vie…

CentOS 7 部署 Nacos (单机版)

CentOS 7 部署 Nacos (单机版) 1. 下载 Nacos 安装包 历史版本:https://github.com/alibaba/nacos/releases/ 我选的是 2.1.0 版本,https://github.com/alibaba/nacos/releases/download/2.1.0/nacos-server-2.1.0.tar.gz 2. …

C# WPF 基础教程——触发器、行为、形状、变换与透明、路径和几何图形

触发器 简单触发器 单条件触发器 多条件触发器 事件触发器 行为 形状 矩形和椭圆 Viewbox缩放控件,直线,折线,多边形 画刷 普通画刷 线性渐变画刷 环形渐变画刷 位图画刷 虚拟画刷(复制元素外观) 位图缓存画刷 变换…

Django 用户验证与权限管理

Django是一款强大且灵活的Python Web框架,不仅在构建功能复杂的网站应用中表现出色,还在诸如用户验证、权限管理等细微之处提供了优秀的解决方案。在多用户、权限复杂的Web应用中,认证和权限管理尤其重要。接下来,我们就来探究一下Django如何处理用户验证和权限管理的。 用…

Halcon Solution Guide I basics(5): 1D Measuring(一维测距)

文章专栏 我的Halcon开发 CSDN 专栏 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 随笔分类 - Halcon入门学习教程 前言 今天来学直线测距,主要是用来测量连点之间的线段距离。感觉是用来得到工业产品精度的。 文章解读 一维测距是非常简单的这里…

分开站两排

体育课上全班同学站成一排,体育老师让同学们从第1位同学开始,按1、2、1、2、1、2……的方式报数,报1的同学留在原地,报2的同学向后退一步,报数完毕后形成两排。现在我们已经知道同学们学号的分布,那么你能分…

小航助学题库蓝桥杯题库c++选拔赛(22年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号) 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)

burp2023专业版,配置上游代理太难找

burpsuite2023专业版的工具栏与之前的版本不同的是,工具栏中没有了user options这一选项 但在通常的使用过程中,常用到配置上游代理。之前的版本呢,上游代理的配置都在user options选项中设置,user options选项还在工具栏中&#…

血的教训---入侵redis并免密登录redis所在服务器

血的教训—入侵redis并免密登录redis所在服务器 今天就跟着我一起来入侵redis并免密登录redis所在服务器吧,废话不多说,我们直接开始吧。 这是一个体系的学习步骤,当然如果基础扎实的话可以继续往下面看 以下都是关联的文章,可以学…

机器学习:DBSCAN算法(效果比K-means好)

基本概念 核心对象:以点为圆心半径为r的圆,如果圈里面的样本点大于给定的阈值(minPts),那么这个点就叫做核心点 直接密度可达:点p在q为圆心的圆内 密度可达: p1与p2直接密度可达,p2与p3直接密度可达&…

[node]Node.js多线程

[node]Node.js多线程 Node.js 多进程exec()使用语法示例 spawn()使用语法示例 fork()使用语法示例 Node.js 多进程 Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发,这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提…

记录创建粒子的轻量级JavaScript库——particles.js(可用于登录等背景显示)

文章目录 前言一、下载particles.js二、引入particles.js并使用三、配置数据说明如有启发,可点赞收藏哟~ 前言 本文记录使用创建粒子的轻量级JavaScript库 particles.js 可用于登录等背景显示 一、下载particles.js 先下载particles.js库,放在项目libs…