参考:Java与编码问题串讲之二--如何理解java采用Unicode编码
总结以下几点:
- Java中字符以UNICODE形式存在,每个字符大小为2个字节
- JVM中字符以UNICODE形式保存,当字符从JVM中移到外部系统,如文件时,就发生了编码转换,使用具体的编码方案。
- String.getBytes(encoding),new String(bytes[],encoding),根据指定的编码格式,完成字符与字节的转换,不指定编码时,JVM采用系统默认的编码格式,这里容易出现乱码。
- Java的I/O系统中能够指定转换编码的地方,也就是在字符与字节转换的地方,那就是是InputStremReader与OutputStreamWriter。这两个类是字节流和字符流的适配器类,它们承担编码转换的任务。
乱码问题的总结,参考:Java与编码问题串讲之三--乱码