签名、BOM头、编码、Windows记事本编码、java编码解码的那些事

时间:2023-03-08 20:23:15
签名、BOM头、编码、Windows记事本编码、java编码解码的那些事
			对于Windows记事本:
ANSI :GB2312 java中应使用GBK解码
Unicode :有签名的UTF-16LE java中应使用UTF-16解码
Unicode big endian :有签名的UTF-16BE java中应使用UTF-16解码
UTF-8 :有签名的UTF-8 java中只能手动去掉签名了再用UTF-8解码了 对于java程序的解码:
GBK :GBK编码可以兼容GB2312,因此用GBK处理GBK、GB2312两种编码
UTF-8 :无签名的UTF-8
UTF-16 :有签名的UTF-16LE或UTF-16BE,两者根据签名自动识别
UTF-16BE:无签名的UTF-16BE
UTF-16LE:无签名的UTF-16LE UNICODE其实只是字符集而不是编码,Windows的记事本用Unicode来代表有签名的UTF-16LE有些
不恰当,记事本里面的ANSI在不同系统会映射成不同编码,在中文系统是GB2312编码,在英文系
统是ASCII编码 签名又叫BOM,即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的
特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来
标记多字节编码文件的编码类型和字节顺序(big-endian或little- endian)。
BOMs 文件头: 00 00 FE FF = UTF-32, big-endian FF FE 00 00 = UTF-32, little-endian EF BB BF = UTF-8, FE FF = UTF-16, big-endian FF FE = UTF-16, little-endian