Java基础系列

Charset(字符集)

2020-06-08  本文已影响0人  Chermack

编码:将字符串通过一系列对应规则转化为字节数组的过程
解码:将字节数组按照编码相反的规则转化为字符串的过程。

使用Charset.availableCharsets()可以获得当前系统可用编码的Map集合。

    @Test
    public void test1() {
        //获取系统的所有可用编码
        for (Map.Entry<String, Charset> charsetEntry : Charset.availableCharsets().entrySet()) {
            System.out.println(charsetEntry.getKey() + "=" + charsetEntry.getValue());
        }
    }
获取系统可用的字符集编码

使用GBK对字符串进行编码和节码。同时测试使用UTF-8对GBK编码的字符串进行节码。

    @Test
    public void test2() throws CharacterCodingException {
        Charset cs1 = Charset.forName("GBK");

        //获取编码器
        CharsetEncoder ce = cs1.newEncoder();

        //获取解码器
        CharsetDecoder cd = cs1.newDecoder();

        CharBuffer cBuf = CharBuffer.allocate(1024);
        cBuf.put("你好啊");
        cBuf.flip();

        //编码
        ByteBuffer bBuf = ce.encode(cBuf);

        for (int i = 0; i < 6; i++) {
            System.out.println(bBuf.get());
        }

        //解码
        bBuf.flip();
        CharBuffer cBuf2 = cd.decode(bBuf);
        System.out.println(cBuf2.toString());

        System.out.println("-------------------------");
        //使用UTF-8解码器对GBK编码的字符串进行节码,会出现乱码结果
        Charset cs2 = Charset.forName("UTF-8");
        bBuf.flip();
        CharBuffer cBuf3 = cs2.decode(bBuf);
        System.out.println(cBuf3.toString());
    }
编解码测试
上一篇 下一篇

猜你喜欢

热点阅读