文件编码方式

https://blog.csdn.net/u013139008/article/details/79425520

1.每个文件如何知道该文件是大端还是小端格式?
文件的开头有两个字节:FEFF 大端
FFFE 小端 这两个字节叫零宽度非换行空格

2.Unicode可以编码世界上所有的字符
但是没有规定多少个字节表示一个字符(没有规定存储)。如果按照字符使用的最长的字节数来表示,就会造成存储上的浪费。

3.UTF-8是Unicode的一种使用方式。UTF-8是一种可变长的编码方式。使用1-6个字节表示一个字符。
一下是Unicode和UTF-8的对照表:

|  Unicode符号范围        |  UTF-8编码方式  

n | (十六进制) | (二进制)
---+-----------------------+------------------------------------------------------
1 | 0000 0000 - 0000 007F | 0xxxxxxx
2 | 0000 0080 - 0000 07FF | 110xxxxx 10xxxxxx
3 | 0000 0800 - 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
4 | 0001 0000 - 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5 | 0020 0000 - 03FF FFFF | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6 | 0400 0000 - 7FFF FFFF | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

如果一个文件是UTF-8格式的,可以选择是否添加BOOM头。
本来BOOM头存在的原因就是为了标识该文件是UTF-8编码的。
BOOM头是指在文件开头有三个零宽度字符:efbbbf

4.ANSI编码格式就是GBK的编码格式

5.ASCII码 使用一个字节进行编码 128个字符 0-127 0x00-0x7F

6.GB2312是区位码,通过使用区号和位号来指定一个汉字

7.GBK总体编码范围为0x8140~0xFEFE,首字节在 0x81~0xFE 之间,尾字节在 0x40~0xFE 之间
编码格式是CP936 也是值GBK,因为微软Windows安排给GBK的CodePage 是CP936

在一个GBK编码的格式文件中数字和英文都是使用半角的,也就是使用一个字节进行编码。如果是全角的,就是使用两个字节进行编码。在读一个文件的时候,如果是GBK格式,读到的一个字节的首位是0,说明该字节是ASCII码。如果是1,说明该字节是GBK编码,使用两个字节表示一个汉字。

8.如何区分一个文件的编码方式:
1)有boom头,表示是UTF-8
2)无boom头,只能根据文本进行分析

9.UCS-2编码是指使用两个字节表示Unicode码,UCS-4是指使用4个字节表示Unicode码。

10.Unicode和GBK之间没有算法和规则进行转换,只能通过一个大表将二者关联起来。

你可能感兴趣的:(文件编码方式)