解决zip文件中文乱码问题

       后台微服务运行在linux环境里,前端Vue。在一个项目中,把后台的文件打包成zip,下载到前台。结果发现zip文件名本身乱码,zip文件内压缩的文件也是乱码。所谓乱码,程序员都见过,就是中文变成了乱七八糟的字符。

        起初觉得问题比较简单,网上导出都是解决方案。真正试试,一个不灵。最后还是公司技术大佬自己解决的。

        不能说网上的东西都是错了,但确实很大一部分都是没有自己实践,直接转的。我们试了无效也不能说就是错的,可能和环境、版本等等都有关系。自己实践吧。

        1、Zip文件中的文件名使用的是一种称为"CP437"的字符集编码,所以要按CP437编码文件名字。 

            ZipEntry ze = new ZipEntry(文件名字);

            结果:文件名字这各种转换,无效,怎么折腾都是乱码,而且更乱。

             我们案例的正解:

        ZipOutputStream zos = new ZipOutputStream(fos);
        zos.setEncoding(“UTF-8”);

       2、zip文件名本身乱码

      FileOutputStream fos = new FileOutputStream(文件名字);

           文件名字这里也是各种转码,折腾,全部无效。

           我们案例的正解:

                   问题根本就不出现在这里,而是出现在前端。文件名称是通过Content-Disposition头传递的,attachment; filename=文件名,这里的文件名字要java.net.URLEncoder.encode处理下。

           如果各位也遇到类似问题,可以参照下。关键是分析到底那步出现的问题:是服务器端生成时出现的,还是传递过程中发生的。

         

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

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

相关文章

【CSAPP】-datalab实验

实验原理与内容 本实验每位学生拿到一个datalab-handout.tar文件。学生可以通过U盘、网盘、虚拟机共享文件等方式将其导入到Unbuntu实验环境中,选择合适位置存放。然后在Ubuntu环境下解压。解压后,根据文件中的叙述和要求更改bits.c文件。本次实验的主要…

【全网最全】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

云计算【第一阶段(26)】Linux网络设置

一、查看网络配置 1.查看网络接口信息ifconfig 查看所有活动的网络接口信息 2.ifconfig命令 查看指定网络接口信息 ifconfig 网络接口 (1)第一行:以太网卡的名字 ens33其中en代表以太网卡, centos6的是eth0, e…

本地maven仓库向远程仓库部署jar包

使用mvn命令即可,如下 mvn deploy:deploy-file \ -DgroupIdtop.rdfa.auth \ -DartifactIdrdfa-auth-spring-mvc-starter \ -Dversion3.0.0-20230718-RELEASE \ -Dpackagingjar \ -Dfile/Users/panmeng/Documents/repository/top/rdfa/auth/rdf…

中国算力网络市场发展分析

中国算力网络市场发展现状 算力涵盖计算、内存、存储等全方位能力,广泛分布于网络边缘、云计算中心、联网设备及转发节点。随着数字化技术革新,算力与网络正深度融合,推动“算网一体化”的演进。这一新型基础设施日渐凸显其重要性&#xff0c…

精准畜牧业:多维传感监测及分析动物采食行为

全球畜牧业呈现出一个动态且复杂的挑战。近几十年来,它根据对动物产品需求的演变进行了适应,动物生产系统需要提高其效率和环境可持续性。在不同的畜牧系统中有效行动取决于科学技术的进步,这允许增加照顾动物健康和福祉的数量。精准畜牧业技…

numpy库(python)

文章目录 1.numpy简介2.安装numpy3.ndarry : numpy库的心脏3.1 创建数组3.2数据类型3.3dtype NumPy是用Python.进行科学计算,尤其是数据分析时,所用到的一个基础库。它是大量Python 数学和科学计算包的基础,比如后面要讲到的pandas)库就用到了…

前端面试题_Css

一、说一下Css的盒子模型? HTML中所有元素都可以看成是一个盒子 盒子的组成:content、padding、border、margin 盒子的类型: 标准盒模型:marginborderpaddingcontent -- box-sizing:content-box(默认&a…

Samtec汽车电子 | 汽车连接器如何在高要求、极端的环境中工作

【摘要/前言】 汽车电子,这些年来始终是极具流量的热门话题,目前不断发展的智能座驾、辅助驾驶等赛道都是对相关产业链需求的进一步刺激,这里蕴含着一片广阔的市场。 同样,广阔的市场里有着极高的准入门槛和事关安全的技术挑战。…

【AI】研发人员的《生存还是毁灭?》

AI在当前技术和社会环境下被视为一种强大的工具和辅助资源,而非一种取代人类开发者的替代品。在本文中,我们将详细探讨AI在多个领域的应用,如何与开发者相互作用,并分析AI对开发者角色的影响和未来的发展趋势。 引言 人工智能&a…

Windows安全认证机制——Windows常见协议

一.LLMNR协议 1.LLMNR简介 链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)数据包格式的协议,使用此协议可以解析局域网中本地链路上的主机名称。它可以很好地支持IPv4和IPv6,是仅次于DNS解析的名称…

代谢组数据分析(十三):评估影响代谢物的重要临床指标

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 相关性分析是通过计算两个变量之间的相关系数来评估它们之间线性关系的强度和方向。最常用的是皮尔逊相关系数(Pearson correlation coefficient),…

security密码明文

引言:在引入未给定初始化mysql数据springboot项目时,由于项目通过security对密码进行了加密,无法进行登录操作,提供的一种解决方法 1、注释掉注入的加密类 // Autowired // private BCryptPasswordEncoder bCryptPassword…

软件测试常见的面试题(46道)

01、您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答:有黑盒和白盒两种测试种类,黑盒有等价类划分法,边界分析法,因果图法和错误猜测法。白盒有逻辑覆盖法&…

VBA通过Range对象实现Excel的数据写入

前言 本节会介绍通过VBA中的Range对象,来实现Excel表格中的单元格写入、区域范围写入,当然也可以写入不同类型的数据,如数值、文本、公式,以及实现公式下拉自动填充的功能。 一、单元格输入数据 1.通过Value方法实现输入不同类型…

Windows上使用Navicat连接ubuntu上的mysql8报错:10061和1130

问题一:can’t connect to mysql server on ‘192.168.xxx.xxx’(10061) 解决: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,bind-address绑定了登陆的IP,把这两行代码注释掉,然后重启mysql。 问题二:1…

利用MMDetection进行半监督目标检测(仅供参考)

半监督目标检测 准备和拆分数据集K则交叉验证的解释 完整的半监督配置文件代码修改继承的数据流文件代码 多GPU训练示范 参考 MMDetection半监督目标检测,半监督目标检测同时利用标签数据和无标签数据进行训练,一方面可以减少模型对检测框数量的依赖&am…

Swift 定制 Core Data 迁移

文章目录 前言什么是 Core Data 迁移?示例更新模型创建一个新的模型版本创建映射模型编写自定义迁移策略总结 前言 随着应用程序和用户群的增长,你需要添加新功能,删除其他功能,并改变应用程序的工作方式。这是软件开发生命周期的…

底层软件 | 十分详细,为了学习设备树,我写了5w字笔记!

0、设备树是什么?1、DTS 1.1 dts简介1.2 dts例子 2、DTC(Device Tree Compiler)3、DTB(Device Tree Blob)4、绑定(Binding)5、Bootloader compatible属性 7、 #address-cells和#size-cells属性8…

动态规划入门,从简单递归到记忆化搜索到动态规划

动态规划入门&#xff0c;从简单递归到记忆化搜索到动态规划 打家劫舍 class Solution {private int nums[];public int rob(int[] nums) {this.nums nums;return dfs(nums.length - 1);}public int dfs(int i){if (i < 0){return 0;}int res Math.max(dfs(i - 1), dfs(i…