关于对String的编解码String(byte[] bytes, Charset charset)的理解

  今天在做毕设,遇见了一个问题,关于编解码的。因为第一次使用FCKEditor上传文件,不太了解FCK的机制。后来在上传文件的时候,出现了中文乱码,如下图:
出现乱码的情况下
 后来想了想,出现乱码肯定是编码的格式和解码的格式不相同。FCKEditor的默认编码格式在中国是"GBK",而我的数据库和网页处理的编码格式都是"UTF-8"。在数次尝试修改FCKEditor的上传文件的编码的情况下,失败后。我只能选择在网页上将获取的数据进行解码,然后重新编码,以保证不出现乱码的问题。

 先来谈谈解码String.getBytes(Charset charset)。
 返回值:byte[]  返回的是一个 字节数组。
 方法的作用:将String以指定的编码格式(既参数charset)进行解码,然后以字节数组的形式存储这些解码后的字节。

 再来谈谈String(byte[] bytes,Charset charset)
 返回值:String  返回的是一串字符串。
 方法的作用:将字节数组bytes以charset的编码格式进行解码 。

原来的代码为:
pagelist2.get(1).getBytes("GBK");//这是取到一个以"GBK"解码的String的字符串
然后我将代码改为:

// 获取到字符串,然后使用使用 GBK 的字符集进行解码,得到字节数组
Byte[] byteArray = pagelist2.get(1).getBytes("GBK");
// 对这些字节数组用 UTF-8 字符集进行编码,得到我们要的字符串
String result = new String(byteArray, "UTF-8");

 修改后的网页获取到的数据如下:
重新编码后获取到的数据

############后续说明############

1. 新人如何理解编解码?
  说实话,一开始学习编码相关知识,老是会混淆编解码。这边我讲讲我的理解,刚刚入门的小白可以参考,大佬用不上。

  • 编码
     一般我们先入为主,认为编码应该是编译成我们看得懂的文字,其实这是错误的。程序所说的编码是编成机器能看懂的代码,也就是二进制01。那么离二进制最近的便是byte类型。 你可能会说那字符串最终也是二进制啊。没错,但是你字符串还要编码,要指定对应的字符集编码格式,而byte不用也不需要。
      记住: 把编码想成加密,机密后我们看不懂的,便是byte。
  • 解码
     解码和编码相反,把我们看不懂的byte按照指定的字符集进行解密,生成我们看得懂的字符串。
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值