一. 问题描述

最近有个需求,解压压缩包提取其中的文件,处理rar、7z格式没啥问题,处理解压zip(项目中用的版本比较老)的时候,解压方法中需要传入编码格式,问题就来了。
使用windows系统打包zip和mac OS系统打包zip,在不手动设置编码格式的情况下(一般情况也没人会专门设置编码格式),windows系统默认编码格式为GBK,mac OS默认编码格式是UTF-8GBK编码,UTF-8解码,如果文件名有中文就会出现乱码,反之亦然,这和2种编码格式的对中文编码的规则有关。

二. 解决方式

  • 首先,默认windows系统编码格式为GBK,mac OS编码格式是UTF-8 ,不考虑打包时变更编码格式;
  • 其次,zip解压方法传入编码格式为ISO-8859-1,为什么传入ISO-8859-1,后面会解释;
  • 最后,通过判断是windows系统打包还是mac OS系统打包(mac OS打包解压后会出现__MACOSX文件夹,以此判断),对文件名进行重新编码。

当然,这种方式并不是一个完美的解决方案,对于不替换三方解压库,也算是一种强硬的解决方案。

三. 关于编码格式格式介绍

英文字母和中文汉字在不同字符集编码下的字节数,看表

编码格式 字符类型 字节数
UTF-8 英文字母 1
UTF-8 中文汉字 3
GBK 英文字母 1
GBK 中文汉字 2
ISO-8859-1 英文字母 1
ISO-8859-1 中文汉字 1

3.1 产生乱码的原因

编码和解码使用的不是同一种编码格式,就会出现乱码

3.2 文字描述太累,直接上图

运行结果⬇️

结合上面的表和这两张图,再加上下面这篇文章的理论,相信聪明的你一定会有很大的收获。
如果有时间还是动手写一遍,针对不同的情况,比如奇数,偶数汉字奇数汉字+英文偶数汉字+英文英文+奇数汉字英文+偶数汉字等之间的区别。

本次记录到此结束,⬇️【推荐并感谢】
UTF-8与GBK互转,为什么会乱码


如果文章对你有帮助,点个赞再走呗

如果文章中存在错误,还望评论区指出

一起成长,共同进步

【记录】关于编码格式导致的中文乱码问题相关推荐

  1. Mysql自动超时重连导致的中文乱码问题

    Mysql自动超时重连导致的中文乱码问题 今天有客户反应从自选股服务器获取的自定义板块中文名称乱码,之前一直都是正常的.看到乱码两字,头脑中首先冒出来的就是查看mysql数据库中的编码集,输入SHOW ...

  2. Charset编码问题导致的中文乱码

    环境:POST方法.Content-Type: application/x-www-form-urlencoded;charset=utf-8(key=val&key2=val2形式) 调用接 ...

  3. java locale中文_locale错误导致Java中文乱码错误的总结

    线上执行MapReduce任务计算时,经过排查发现了某些服务器计算的数据出现中文乱码问题,但是服务器的配置是完全一致的.由于我们使用的key可能包含中文,中文乱码问题体现在每次合并map记录的时候计算 ...

  4. mac终端下修改MySQL的编码格式以解决中文乱码问题--找不到my-default.cnf及my.cnf

    查看一下support-files文件夹(Finder下"前往文件夹";路径:/usr/local/mysql/support-files) 里面有没有my-default.cnf ...

  5. Spring MVC 3.2+ @ResponseBody 导致的中文乱码处理

    2019独角兽企业重金招聘Python工程师标准>>> 问题原因是spring mvc中竟然使用了ISO-编码 这个问题看了好几个,有的配置AnnotationMethodHandl ...

  6. Oracle编码格式为US7ASCII中文乱码如何解决

    最近有家医院HIS数据库编码是US7ASCII,头疼啊,Navicat都无法正常显示,琢磨了下.看到一个哥们写的文章后,实现了下,成功!JDBC查出来之后,用getAsciiStream获取输入流然后 ...

  7. java web乱码_【SpringBoot WEB 系列】RestTemplate 之中文乱码问题 fix

    [WEB 系列]RestTemplate 之中文乱码问题 fix 在 RestTemplate 基础用法博文中,post json 表单时,会发现存在中文乱码问题,本文主要介绍对应的解决方案 I. 中 ...

  8. 从本机发送信息到另一台服务器上时中文乱码

    2019独角兽企业重金招聘Python工程师标准>>> 从本机发送信息到另一台服务器上时中文乱码 别的电脑都没问题,只有本机通过sts开tomcat并发送信息到另一服务器时中文乱码. ...

  9. Dapper操作MySQL数据库获取JSON数据中文乱码

    在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. 为了引出最终问题出在什么 ...

最新文章

  1. BFS之三(单向bfs和康托压缩)
  2. SAP医药医疗行业解决方案
  3. spring-boot入门之二——验证、AOP日志、异常处理
  4. profile 文件含义
  5. python pandas 拿取表格中两个列_在家憋着也是憋着,不如来学习一下python数据聚合的方法...
  6. python 基础 - 循环语句
  7. Spring Boot 2.0.0.M7 生产环境部署
  8. link要使用全路径
  9. ts文件怎么合并转换成mp4?
  10. 数据库课程设计:会议预约管理系统(Java+MySQL)
  11. java中常用的摘要算法
  12. vue运行报错冒号问题,browser.js:158 Uncaught SyntaxError: Unexpected token ‘:‘
  13. 分布式文件存储系统MinIO入门教程
  14. AURIX TriCore学习笔记四:LwIP裸机移植
  15. 试算平衡表示例图_案例十一试算平衡表
  16. Clion 调教记录
  17. JavaScript刮奖效果(jquery图片刮奖插件)
  18. ubuntu20.04开机黑屏解决方法
  19. MP4/QuickTime的“ftyp” 名称完整列表
  20. ui设计移动端字体适配_移动端UI设计尺寸规范(示例代码)

热门文章

  1. PDF是什么格式?如何在电脑上编辑PDF文件
  2. 石头剪子布(字符串)c语言,石头、剪刀、布程序,C语言模拟
  3. photoshop中如何在6寸相纸上打印1寸照片12张3X4模式(手动拖动模式)
  4. 【PostgreSQL-15的 \watch命令】
  5. python读取csv文件路径设置_python读取csv文件
  6. 小程序运营推广的方法
  7. c语言上机试题倒计时,C语言课程实训-显示考试倒计时.doc
  8. 一个简单的登录注册网页的实现
  9. gRPC大数据量消息传递方法
  10. 教你如何利用canvas画布绘制哆啦A梦