【Java】Java中编码和解码的代码实现

一、概述

在刚刚我们学字符集的编码方式经常会听到一句话:编码和解码,那这两个我能不能自己去看一下它的结果呢?

其实是可以的,在Java中有对应的方法让我们可以看见编码的结果和解码的结果。

现在我们使用的是 IDEA,IDEA默认的是 Unicode 中的UTF-8编码格式,因此 getBytes() 用的就是默认的 UTF-8

image-20240503100810696

但是有的同学是使用 eclipse 编写代码,eclipse 默认的是 GBK

解码使用的其实是 String 里面的构造方法。

image-20240503100512414

二、编码

编码:将我们要存储的数据变成真正存储在硬盘中的字节数据,因此返回值是一个 字节数组

//1.编码
String str = "ai你哟"; 
byte[] bytes1 = str.getBytes();// 默认使用的是UTF-8,一个英文一个字节,一个中文三个字节,因此转换为字节后为8个字节
System.out.println(Arrays.toString(bytes1)); // [97, 105, -28, -67, -96, -27, -109, -97],这个就是编码之后的字节数据,在存储的时候会把它们变成二进制存储在硬盘中。

但如果我们想指定编码方式,就可以使用第二个重载的 getBytes()

在指定的时候可以写小写也可以写大写,但是建议写成大写,因为GBK是多个英文单词首字母组合在一起的,用大写会更标准一些。

这个方法会有一个编译时异常,因为它要提醒你:这种方式在本地中有没有呢?例如不能写 abcabc 肯定是没有的。

将异常抛出即可。

image-20240503101340044
byte[] bytes2 = str.getBytes("GBK");// 一个英文一个字节,一个中文两个字节,因此转换为字节后为6个字节
System.out.println(Arrays.toString(bytes2)); // [97, 105, -60, -29, -45, -76]

三、解码

解码跟编码是反过来的,我们可以将上面的字节数据变成我们想要查看的内容。

方法很简单,就是 String 的构造方法。

String str2 = new String(bytes1);
System.out.println(str2); // ai你哟

但如果解码跟编码的方式不一样,就会出现乱码现象。

String str3 = new String(bytes1,"GBK");
System.out.println(str3); // ai浣犲摕,可以发现前面的英文是没有问题的,但是中文就出现问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值