编码问题(BOM头简单了解)

原文链接: https://blog.csdn.net/qq_45085954/article/details/99606880

浅谈编码问题

中文编码
gb2312 (采用两个字节保存字符汉字,英文数字一个字节)
GBK (采用两个字节保存字符汉字,英文数字一个字节)
GB18030 (英文数字都是一个字节,中文是两个或四个字节)
Unicode字符集(包含每个国家的所有字符)国际通用
unicode编码 使用两个字节—65536个字符,浪费空间
为了节省空间使用转码形式
utf-8 使用 1 、2、3个字节 (EF BB BF 记事本添加的BOM(Byte Order Mark)头,编码的标记)
utf-16 使用两个字节—65536个字符 (FF FE 小端(尾) FE FF 大端(尾))
utf-32 使用4个字节
台湾 big5
ANSI:在简体中文Windows操作系统中, ANSI 编码代表 GBK 编码
BOM头(记事本特有的)

BOM头: Byte Order Mark
标识文件的编码,实际大小比数据多3个字节
直接在记事本编辑数据保存,默认会给你的数据添加上BOM头,使你的文件的大小比实际数据多3个字节(utf-8编码)。但是,当你使用java程序往记事本写入数据的时候,不会添加BOM头
例如:当你用utf-8的格式编码的时候,用程序去读取文件,虽然显示的数据是文件中保存的数据,但是,可以用EditPlus打开程序编译后的.class文件,并且转化为16进制展示,你就会发现,在前面的3个字节会是 :EF BB BF 这三个字节告诉记事本,这是一个用utf-8编码的文件。

utf-8 EF BB BF
utf-16(Unicode) FF FE 编码的时候,小的在后面(FE在后面) 小端 little endian
utf-16(Unicode big endian) FE FF 编码的时候,大的在后面(FF在后面) 大端 little endian
 

猜你喜欢

转载自blog.csdn.net/qq_31433709/article/details/102573500