java string 解码_java里关于String的编码与解码?

0cfc4db6c68efbd4ef837f5f61b2175a.png

守着一只汪

public byte[] getBytes(String charsetName)使用指定的字符集将此String编码为byte序列,结果存在一个byte数组中public String(byte[] bytes, String charsetName)通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String。在网络传输中,信息都是以字节序列的方式传输的。所以,发送方的String要按照某种编码方式(如UTF-8,GBK)编码为字节序列,在网络中传输后,接收方取得这个字节序列,按照相同的编码方式将字节序列解码为String。请看下面的代码片段:String name = "张三";byte[] b1 = name.getBytes("UTF-8");String name1 = new String(b1, "UTF-8"); //编码解码相同,正常显示System.out.println(name1);String name2 = new String(b1, "GBK"); //编码解码不同,乱码System.out.println(name2);byte[] b2 = name.getBytes("GBK");String name3 = new String(b2, "GBK"); //编码解码相同,正常显示System.out.println(name3);String name4 = new String(b2, "UTF-8"); //编码解码不同,乱码System.out.println(name4);至于你的那个情况,要先用gbk编码,然后再用utf-8解码才能获得正常的字符串,我估计是因为1.传输过来的字节码是用utf-8编码的,假设字节码为b。2.你获得的那个字符串,假设为s,是用gbk对b进行解码获得的字符串,所以是乱码。3.你使用gbk对s进行编码,用gbk解码之后再编码,于是获得了原来的b。4.你使用utf-8解码,所以获得了正常的字符串。简单的说: b -> (gbk解码) -> 乱码 -> [此处开始是你做的](gbk编码) -> b -> (utf-8解码) -> 正常字符串研究完编码收获会不小的,对以后理解Java的输入输出(尤其是网络通信和文件读写)都很有帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值