java IO 字符编码相关

gbk编码: 中文占用两个字节,英文占用一个字节
utf-8编码:中文占用三个字节,英文占用一个字节
java是双字节编码,是utf-16be编码
utf-16be编码:中文占用两个字节,英文占用两个字节

当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码


    package jn.io;

import java.io.UnsupportedEncodingException;

public class EncodeDemo {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String s = "江南AB";
        byte[] bytes1 = s.getBytes();
        for(byte b:bytes1){
            System.out.print(Integer.toHexString(b & 0xff)+"  ");
        }
        System.out.println();
        System.out.println("gbk的编码");
        byte[] bytes2 = s.getBytes("gbk");
        for(byte b:bytes2){
            System.err.print(Integer.toHexString(b & 0xff)+"  ");
        }
        System.out.println("\n utf-8 的编码:");
        byte[] bytes3 =s.getBytes("utf-8");
        for(byte b:bytes3){
            System.out.print(Integer.toHexString(b &0xff)+"  ");
        }

        System.out.println("\njava 的编码是utf-16  中文占用2个直接,英文也是占用两个字节");
        byte[] bytes4 =s.getBytes("utf-16");
        for(byte b:bytes4){
            System.out.print(Integer.toHexString(b &0xff)+"  ");
        }

        System.out.println("\n当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码");

        String string1 = new String(bytes4);
        System.out.println(string1);
        String string2 = new String(bytes4,"utf-16");
        System.out.println(string2);
        /**
         * 文本文件 就是字节序列
         * 可以放 任意编码的字节序列
         * 
         * 中文系统下ANSI编码代表GBK 电脑上新建文本格式文件,只认识ansi编码;复制的来的文件什么编码都可以,但它的编码也是和原编码一致。
         */


    }

}

输出的结果:

bd ad c4 cf 41 42 bd ad c4 cf 41 42
gbk的编码

utf-8 的编码:
e6 b1 9f e5 8d 97 41 42
java 的编码是utf-16 中文占用2个直接,英文也是占用两个字节
fe ff 6c 5f 53 57 0 41 0 42
当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码
?l_SW

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值