java中单字符字符串utf-16编码为什么占用4个字节

java中单字符字符串,utf-8占用3个字节,utf-16编码为什么占用4个字节

img

img

utf-8 :

img

utf-16:

img

img

查到了 是零宽度非断空格符导致的,占用两个字节

img

Unicode 规范定义,每一个文件的最前面分别加入一个表示编码顺序的字符,这个字符的名字叫做"零宽度非换行空格"(zero width no-break space),用FEFF表示。这正好是两个字节,而且FF比FE大1。
如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。