Java编码与解码 矫情吗;* 2023-09-23 16:19 156阅读 0赞 > 首先区分加密与编码并不是一回事, > > 本节主要讲述常见的三种编解码方式,分别为:Unicode、URL、Base64。 1. 常见编码算法: * **Unicode编码**:每一字符都可变成以 \\u 开头,长度为6的字符串。 * **URL编码**:以百分号%开头,全大写。由于中文在utf-8中大多数以3字节(即24比特位)表示,所以每个汉字都会变成以百分号%开头、紧接着2位16进制数,一共三份、总长度为9的字符串。 * **Base64编码**:把二进制数据变成文本格式,这样在很多文本中就可以处理二进制数据。例如要在电子邮件中添加一个二进制文件,就可以使用Base64编码,然后以文本的形式传送;或者将其他加密方式产生的二进制密文转化为十六进制的字符串密文。它会把原始数据的长度【约】增加1/3,但其他编码算法并不一定比其更优。 2. Java常见解码思路: * 首先获取被编码的字符流,即byte\[\]。因为byte是二进制数0/1,相当于获取了最原始的二进制数据,1字节等于8位二进制数bit,范围从-128 ~ 127。 * 利用String等方式尝试不同的字符集,解码。 **【本质】:用对应的“字符集”来解二进制码。** // 指定了一种编码方式 byte[] bytes = "中文".getBytes("GBK"); // 用相对应的 “字符集” 方式来解码 String msg = new String(bytes, "GBK"); 3. Unicode编解码 * 需编写固定逻辑,较麻烦,直接使用[hutool框架][hutool]即可。 // Unicode编码 String en = UnicodeUtil.toUnicode("中国"); // Unicode解码,\u4e2d\u6587 String msg="\\u4e2d\\u6587"; String s = UnicodeUtil.toString(en); 4. URL编解码(Java原生) * URLEncoder * URLDecoder // URL编码 String en = URLEncoder.encode("中文", StandardCharsets.UTF_8); String en = URLEncoder.encode("中文", "utf-8"); // URL解码 String de = URLDecoder.decode("%E4%B8%AD%E6%96%87", "utf-8"); 5. Base64编解码 * 原理解释:**原先**是8位一字节,即8位二进制数可以表示一字符;**现在**我们令6位表示一字符,所以如果原来是【Man】,则会被翻译为【TWFu】,即虽然底层的数据量没变(还是24位),但是所表示的数据长度增加了1/3(由 size = 3 变为 size = 4 )。 ![image-20220809211351667][] (3个字节相当于24个比特,对应于4个Base64单元) * 另外,如果要编码的字节数不能被3整除,最后会多出1个或2个字节,那么可以使用下面的方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。【然后】因为被补足的地方会用等于号`=`作后缀(此时为补足号=而不是6个0代表的索引“A”,这点要分清),所以我们才能经常看到编码的末尾出现等号。 ![image-20220809212022315][] (8与16不能被3整除,24才能被3整除) ![image-20220809212528981][] (总共65字符 = 64个字符 + 补足符`=`) * **Java原生** // Base64编码 Base64.getEncoder().encodeToString("中国".getBytes()); // Base64解码 byte[] bytes = Base64.getDecoder().decode(a); String decode = new String(bytes); * **hutool框架**:本质还是源于Java原生的方式,只是作了层简易“封装”,如无必要不建议导入使用。 String encode = Base64.encode("中国"); String decode = Base64.decodeStr(encode); [hutool]: https://hutool.cn/docs/#/core/%E6%96%87%E6%9C%AC%E6%93%8D%E4%BD%9C/Unicode%E7%BC%96%E7%A0%81%E8%BD%AC%E6%8D%A2%E5%B7%A5%E5%85%B7-UnicodeUtil [image-20220809211351667]: https://img-blog.csdnimg.cn/img_convert/22db327a83ffdccd1df5074ad272b6f3.png [image-20220809212022315]: https://img-blog.csdnimg.cn/img_convert/7c05f9c4fab1bc35082a09266826954f.png [image-20220809212528981]: https://img-blog.csdnimg.cn/img_convert/d558886639a2870af9a1ec26f683d6be.png
相关 Javascript UrlEncode编码/解码 && Java UrlEncode编码/解码 Javascript [UrlEncode编码/解码][UrlEncode] console.log(escape("你好"))//编码 co... ╰半橙微兮°/ 2024年04月18日 22:18/ 0 赞/ 63 阅读
相关 字符集和java的编码与解码 一、ASCII和GBK字符集 计算机存储一个英文字符需要一个字节。 ASCII字符集,包括128(0000000B~1111111B)个数据,存储英文字母和字符,对于欧 阳光穿透心脏的1/2处/ 2024年03月16日 17:37/ 0 赞/ 54 阅读
相关 Java编码与解码 > 首先区分加密与编码并不是一回事, > > 本节主要讲述常见的三种编解码方式,分别为:Unicode、URL、Base64。 1. 常见编码算法: 矫情吗;*/ 2023年09月23日 16:19/ 0 赞/ 157 阅读
相关 url编码 java_java中的url 编码与解码 在开始讨论编码解码之前,首先来明确一下问题。 什么是application/x-www-form-urlencoded字符串? 答:它是一种编码类型。当URL地址里包含非西 Myth丶恋晨/ 2022年11月01日 14:00/ 0 赞/ 331 阅读
相关 java编码解码过程 最近做项目的时候,有时会遇到中文乱码的问题,网上查询了很多资料,发现大多都是只讲解决方案,并没有讲到为什么要使用这种方案,这种方案的原理是什么? ﹏ヽ暗。殇╰゛Y/ 2022年08月18日 15:17/ 0 赞/ 180 阅读
相关 Java中的编码与解码 在前面学习字符流的时候,我们提到过关于编码的问题,这是个巨坑,一不小心可能就会有乱码出现,但是只要我们弄懂这编码与解码的原理,就能尽量避免踩坑了 > 何谓编码?何谓解码? 悠悠/ 2022年06月06日 11:10/ 0 赞/ 249 阅读
相关 【JavaScript】encodeURIComponent 编码 与 解码 转载自:[encodeURIComponent编码与解码][encodeURIComponent] 问题:JavaScript用encodeURICompone 亦凉/ 2022年05月30日 08:16/ 0 赞/ 337 阅读
相关 java图片的编码与android解码 在网上找了很久,然后东拼西凑,挨个试了一遍,发现这个是有效的。。 mes\[3\] 是一个String 字符串,我这里是将图片转为字符串进行传输的 android 客户端的 忘是亡心i/ 2022年03月17日 16:20/ 0 赞/ 216 阅读
相关 URL编码与解码 前言 最近在使用office online的时候,通常地址栏给出的一大串地址看不太懂是啥意思,简单查询了一下是和编码与解码的问题。 举个例子 > [http:// 我就是我/ 2021年06月24日 16:09/ 0 赞/ 644 阅读
还没有评论,来说两句吧...