美文网首页
记录:关于编码格式导致的中文乱码问题

记录:关于编码格式导致的中文乱码问题

作者: Guxxxd | 来源:发表于2021-12-08 18:15 被阅读0次

一. 问题描述

最近有个需求,解压压缩包提取其中的文件,处理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 文字描述太累,直接上图

运行结果⬇️

image.png

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

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


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

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

一起成长,共同进步

相关文章

  • 记录:关于编码格式导致的中文乱码问题

    一. 问题描述 最近有个需求,解压压缩包提取其中的文件,处理rar、7z格式没啥问题,处理解压zip(项目中用的版...

  • 插入数据库出现中文乱码问题

    插入数据库出现中文乱码问题 出现这种乱码问题,肯定是编码除了问题,编码和解码不是同一种编码格式就会出现乱码情况! ...

  • mysql中文乱码问题

    一般来说,mysql的中文乱码都是由于编码问题导致的 分为:1导入数据时选择的编码格式 2数据库本身的...

  • swift 带中文的字符串会出现乱码

    出现中文乱码,大概率就是编码问题导致的,使用GBK/GB2312进行编码

  • MySQL导出CSV文件

    最近接触到mysql比较多,遇到mysql文件导出csv文件,存在格式问题和中文乱码问题,以此记录 中文乱码问题 ...

  • Java写入MySql中坑爹的中文乱码

    记得以前学习SQL Server是也有中文乱码问题,需要所有的编码格式一致就好。最近用MySql也出现了中文乱码,...

  • Servlet post请求中文乱码问题

    1、接收request输出中文乱码问题:解析数据前,设置好req的编码格式,用该格式来编码参数,与发送请求保持一致...

  • 浏览器内核的一些事

    Q&A 网页乱码的问题是如何产生的 html文档保存的编码格式与浏览器解析时的解码格式不匹配而导致的乱码问题; 解...

  • 任务四作业

    一、网页乱码的问题 1、如何产生? 乱码产生的根本原因是你保存的编码格式和浏览器解析时的解码格式不匹配导致的。乱码...

  • 中文编码前后端格式问题

    java 中文乱码为 ?????? 格式,使用 URLEncoder.encode 编码,英文编码不受影响 web...

网友评论

      本文标题:记录:关于编码格式导致的中文乱码问题

      本文链接:https://www.haomeiwen.com/subject/lwmlmltx.html