文本文件编码格式

文本文件的编码格式有:

    ANSI : 无文件头定义

    Unicode :  前两个字节 FFFE

    Unicode Big Endian :  前两个字节FEFF

    UTF-8 : 前两个字节EFBB,第三个字节0xBF


对于无文件头的文件,文本阅读工具并不会按ANSI解析,而是智能的去分析文件的编码格式然后解析


中文的编码的形成过程:

  小于127的不变,将大于127的两个字符连在一起表示一个汉字,前面一个字节(高字节0XA1-0XF7)后面一个字节(低字节0XA1-0XFE)可以组合出大约7000个汉字,在这些编码中,连ASCII本来就有的数字标点字母全部都编进去了,这就是"全角",小于127的称为“半角”字符,这就是“GB2312”

  后来汉字不够用,于是规定第一个字节是大于127的字符就固定表示这是一个汉字的开始,这就是GBK标准,

  后来再扩展就形成了GB18030

  后来中国的程序员就称之该编码为DBCS(Double Bytes Character Set)

  但是这样,各个国家之间只懂得自己的编码,完全不能领会他国的文字, 于是ISO组织为了解决这一问题,出了UCS(Universal Multiple-Octet Coded Character Set)俗称“unicode",直接规定统一用2个字节表示一个字符,对于半角字符,原编码不变,只是长度由8变为16(高8位永远为0,极其浪费)

  unicode到来时,网络也开始兴起,于是面向传输的UTF(unicode transfer format)出现了(UTF8每次传8位,UTF16每次传16位),在文本的传送过程中,由于对数据流的高低位解读方式不同,于是采用了一种简单的方式,先传一个标志符,高位在先传FEFF,反之为FFFE

  unicode->UTF8的转换规则:

    0000-007F    0xxxxxxx

    0080-07FF    110xxxxx 10xxxxxx

    0800-0FFF    110xxxxx 10xxxxxx 10xxxxxx

  于是这就是utf8编码, UTF8是一种变长的编码方式,规则有两条:

       1. 字节的第一位为0,后面7位为这个字符的unicode码

        2. 对于n字节的符号,第一个字节前n位设为1,第n+1位设为0,后面的字节前两位一律为10,剩下没有提到的位全部为这个字符的unicode码

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