不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、Big5、Shift_JIS 等各自的编码标准。这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。 当然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字节代表1个字符。这一点是ANSI编码与Unicode编码之间最大也最明显的区别。 unicode 是宽字符类型,是与国际接轨的,微软原先只支持ANSI,随着windows的用户越来越多,其想更抓住用户,则决定支持unicode字符,在win98编程软件,只支持ANSI字符,win2000后既支持ANSI也支持unicode,加入unicode库是为了使自己的软件显得高级一点点,不加也行,只是如果这软件在win2000环境下运行,速度要相对慢一点点点,因为字符要先转换为unicode传入整理完再转换为ANSI传出
不过加了unicode库,你又得学一下unicode,这其实也没什么,就是双字节字符集比如原先你写一个 char* str="Error"; 现在加入T C h a r. h 文件 TCHAR *szError=_Text("Error"); 这样如果在包含该头文件时没有定义_ U N I C O D E,上述就是单字节字符,如果定义了 _ U N I C O D E,就是双字节字符。_T("")是一个宏,定义于tchar.h文件中。作用是将字符串转换为Unicode编码。 在C语言中普通的字符串使用ANSI进行文字处理。也就是常见的双引号字符串。但是由于数据类型的局限性,ANSI的字符串不能保存全部语言。比如说中文。 例如:char *str = "ABC"; Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以保存中文等。 |
|