美文网首页
java编码备忘

java编码备忘

作者: _黄超杰 | 来源:发表于2018-07-20 23:08 被阅读0次

    1. "中".getBytes()返回什么?

     A:和源文件的编码有关,gbk的话返回两个字节的编码:[-42, -48],utf-8的话,返回三个字节的编码:[-28, -72, -83],

    代码:

    System.out.println(Arrays.toString("中".getBytes()));   

    输出:

    源文件为gbk编码:[-42, -48]

    源文件为utf-8编码:[-28, -72, -83]

    [-28, -72, -83]对应的16进制形式如下:

    System.out.println(Integer.toHexString(-28));    // 输出ffffffe4

    System.out.println(Integer.toHexString(-72));    // 输出ffffffb8

    System.out.println(Integer.toHexString(-83));    // 输出ffffffad

    对于utf-8编码的文件,在vscode里面,使用hexdump插件查看【中】这个字的内容如下:

    Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F   

    00000000: E4 B8 AD 

    2. 使用FileOutputStream.write('中')到一个文件中,到底写入了什么?写入了几个字节?

    A:FileOutputStream.write()始终只写一个字节,'中'是一个字符,编码为20013,其二进制为:

    System.out.println((int) '中'); // 20013

    System.out.println(Integer.toBinaryString('中')); // 100111000101101

    write()方法将int类型转化为byte类型,只取后面8位,刚好为48. (0x2D)

    相关文章

      网友评论

          本文标题:java编码备忘

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