美文网首页
浅谈UTF-8编码

浅谈UTF-8编码

作者: ayagg | 来源:发表于2018-12-31 23:03 被阅读0次

    1. 下表为UTF-8编码规则表

    2. 上述很重要的一个信息是下一个的first code point是接着上一个的last code point的,因此utf-8有一些看似合乎规则的编码也无法转化,譬如11000000 10000001,虽然符合双字节的规则,但其剩余的二进制表示的值小于128,所以无效【之前一直以为是移位规则之类的,会自动+128这样】

    3. 这个常见的乱码符号是utf-8编码错误时产生的,对应的二进制数为11101111 10111111 10111101,共三个字节,每当utf-8编码错误时【不符合上表的规则】,每一个字节都会对应转化成三个字节的这个乱码符号,譬如执行

        byte[] bBytes = new byte[20];

        bBytes[0] = (byte) 0b11000000;

        bBytes[1] = (byte) 0b10000001;

        System.out.println(new String(bBytes, StandardCharsets.UTF_8));

    会得到两个如下的乱码符号

    也正因为如此,当你得到一串乱码字符时,可通过减去两倍乱码字符数来得到原字节数

    4. utf-8,二进制在线转换

    相关文章

      网友评论

          本文标题:浅谈UTF-8编码

          本文链接:https://www.haomeiwen.com/subject/rlxglqtx.html