今天被一个哥们问住了:当文件中有ASCII编码和ANSI编码混排的时候,如何区分.
经过查找资料,结果如下:
中文总体上来说有ANSI编码和UNICODE编码
ANSI称之为地区编码,UNICODE是国际编码
ANSI往往是某个国家为自己的语言所创立的,比如GB2312,GBK,BIG5等
UNICODE用来涵盖世界上所有的字符,简单的说就是全球用同一套编码格式.
ANSI称之为地区编码,UNICODE是国际编码
ANSI往往是某个国家为自己的语言所创立的,比如GB2312,GBK,BIG5等
UNICODE用来涵盖世界上所有的字符,简单的说就是全球用同一套编码格式.
ASCII采用00~7F之间的编码,而ANSI则采用80~FF的两字节表示一个字符,UNICODE文章的开头会以FF FE开头来标识.
"123好"的ANSI编码就是"123"以ASCII编码保存而'好'以ANSI保存.
ANSI编码的类型是当字在ASCII表中的时候,就以ASCII保存,如果不在,则以两位80-FF之间的编码保存.
ANSI编码的类型是当字在ASCII表中的时候,就以ASCII保存,如果不在,则以两位80-FF之间的编码保存.
范例:
123好
ASCII:31 32 33 3F (转换时溢出)
ANSI:31 32 33 BA C3
UNICODE:FF FE 31 00 32 00 33 00 7D 59
ASCII:31 32 33 3F (转换时溢出)
ANSI:31 32 33 BA C3
UNICODE:FF FE 31 00 32 00 33 00 7D 59
31 32 33 BA C3 没有以FF FE开头,故不是UNICODE
0< 31,32,33 <7F --ANSI
80< BA,C3 <FF --两字节组成一个ANSI
0< 31,32,33 <7F --ANSI
80< BA,C3 <FF --两字节组成一个ANSI
后来又简单的看了一下半角和全角的问题,其实就是对于ASCII码表中存在的字符是以ASCII码保存(半角)还是以ANSI码保存(全角)的不同而已.
测试程序如下(IDE默认编码:GBK):




































































