Java系统内的字符以双字节存储,采用unicode(utf-16之一)编码。(估计jdk后续版本的java字符编码可能提升为4字节,这样可彻底解决东方国家字库问题。)
Utf-8是一种标准存储编码格式,用utf-8编码后的字节流具有非常好的防(纠)错和兼容能力。用utf-8编码(encode)unicode码时不会有信息损失。当然用utf-8解码(decode)utf-8编码的字节流,生成unicode码时也不会有信息损失。但禁止用utf-8解码非utf-8编码的字节流。总之Utf-8可以编码任何unicode 码,但只能解码utf-8编码的字节流。
Utf-16和utf-8用法是一样的,仅是一点不同:utf-16是双字节倍数编码,utf-8是单字节倍数编码,在英文国家里用utf-8和ascii编码后的字节流是一样的,这样有利于系统平稳升级到支持utf-8的系统里,但系统要升级到支持utf-16就要把所有数据都更新一遍,这显然不能接受。注意:utf-16根据字节排序不同有两种编码
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/