[ 编码 ]UTF-8 YYDS

2021-08-28  本文已影响0人  一个好汉

编码 用各种字符集记录会是一个怎么样的结果呢
GBK是支持 ASCII 但是不兼容 ISO8859-1
如果需要支持更多国际化的符号 我们还是需要使用UTF-8

这里使用 GBK 编码 ð_µ
结果为 3f5f3f
ð 为 ISO8859-1 中的一个字符
但是咱GBK不支持呀 那就返回 3f吧
UTF8说我一点也不虚 都可以

/**
     * 编码 用各种字符集记录会是一个怎么样的结果呢
     */
    public static void encode() {
        String src = "ð_µ";
        logSomething(src);

        src = "中";
        logSomething(src);
    }

/**
     * 记录一个字符在不同字符集的十六进制表现
     * @param src
     */
    private static void logSomething(String src) {
        log.info("src : {}", src);

        log.info("ISO_8859_1 getbytes:{}",
                HexUtil.encodeHexStr(src.getBytes(StandardCharsets.ISO_8859_1)));
        log.info("US_ASCII getbytes:{}",
                HexUtil.encodeHexStr(src.getBytes(StandardCharsets.US_ASCII)));
        log.info("GBK getbytes:{}",
                HexUtil.encodeHexStr(src.getBytes(new GBK())));
        log.info("UTF_8 getbytes:{}",
                HexUtil.encodeHexStr(src.getBytes(StandardCharsets.UTF_8)));
    }

结果
src : ð_µ
ISO_8859_1 getbytes:f05fb5
US_ASCII getbytes:3f5f3f
GBK getbytes:3f5f3f
UTF_8 getbytes:c3b05fc2b5
src : 中
ISO_8859_1 getbytes:3f
US_ASCII getbytes:3f
GBK getbytes:d6d0
UTF_8 getbytes:e4b8ad

上一篇下一篇

猜你喜欢

热点阅读