1) ANSI 和ASCII 码是一回事么
刚开始应该是一回事,因为计算机刚出来时,只用ASCII的128个字符。
但后来,128显然不够用了,又出现了后来的256(使用了第8位),以及能表示更多字符的GB2312,GBK等,后者称为MBCS字符集(Multi Byte Character System).
不过,MBCS同ASCII是完全兼容的。就是对于前ASCII的128个字符,在MBCS字符集下有完全相同的编码。也意味着MBCS下,字符的长度有可能有1个字节的,也有多个字节的。
由于这个兼容性,所以也把这些统称为是ANSI字符集。
2) 在不同的场合,ANSI可能代表ASCII,也有可能代表MBCS。 还有可能什么都代表。如notepad在保存时,那个ANSI表示系统默认的代码页。如果是英文的系统,则是ASCII,如果中文的,则应该是GDK
3)Unicode只是确定了字符的二进制编码,但并没有确定字符的存储和传输时的编码。比如UTF-8 ,UTF16。 这些都是Unicode的具体实现方式。
4)Unicode和ANSI是不兼容的。因为对于128个ASCII码来说,Unicode也要用两个字节来表示。 还有就是同一个MBCS字符,在Unicode和ANSI下可能是不一样的。
5)Unicode 和ANSI有时候可以相互转化。(这时候的ANSI显然指的是MBCS.因为ASCII只有128个字符,大多数的Unicode字符都没有ASCII码)