编码就是把字符转换为字节,而解码是把字节重新组合成字符。
    如果编码和解码过程使用不同的编码方式那么就出现了乱码。

    • GBK编码中,中文字符占2个字节,英文字符占1个字节
    • UTF-8编码中,中文字符占3个字节,英文字符占1个字节
    • UTF-16be编码中,中文字符和英文字符都占2个字节

    UTF-16be中的be指的是Big Endian,也就是大端。相应地也有UTF-16le,le指的是Little Endian,也就是小端。
    Java的内存编码使用双字节编码UTF-16be,这不是指Java只支持这一种编码方式,而是说char这种类型使用UTF-16be进行编码。char类型占16位,也就是两个字节,Java使用这种双字节编码是为了让一个中文或者一个英文都能使用一个char来存储。