• 解决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处理下。

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

             

  • 相关阅读:
    分布式事务-常见解决方案
    Scrapy爬虫框架实战
    vscode 资源管理器移动到右边
    如何科学的进行Android包体积优化
    关于复杂数据的处理
    机器学习中的类不平衡问题
    [iOS- Mac终端上传Git and 生成Token]
    Jquery 如何获取子元素。如何找到所有 HTML select 标签的选中项。jQuery 里的 ID 选择器和 class 选择器有何不同
    cookie + localStorage + sessionStorage
    【MySQL】数据类型
  • 原文地址:https://blog.csdn.net/wangbing1125/article/details/140066406