游子的博客
慈母手中线,游子身上衣, 临行密密缝,意恐迟迟归, 谁言寸草心,报得三春晖。 数据读取中,请稍候......
posts - 337,  comments - 546,  trackbacks - 0

1.一共有三种字符集:单字节字符集single-byte charecter set(如ascii和扩展ascii),不定字节字符集multi-byte charecter set(如双字节字符集:Double-byte charecter set),wide-character set宽字符集(如Unicode);

2.windows 98由于是继承自16位操作系统的32位操作系统,而16位操作系统只使用ANSI编码,故windows98只支持ANSI编码,windows系统调用函数的参数都必须是ANSI编码;
     windows 2000是一个不同于windows 98的全新操作(即它是重新开发的),它的系统调用函数的参数只支持Unicode,但是它同时也通过一种间接转换来支持ANSI参数的系统调用,即当参数是ANSI时,操作系统会将ANSI转化为Unicode,然后将转换后的参数传给被调用的这个系统函数,同理,若这个系统函数返回值是ANSI,操作系统也会将Unicode转换为ANSI,然后传递这个返回值;因此说windows 2000是既支持ANSI也支持Unicode,但是使用ANSI会降低系统的性能;
     windows ce只支持Unicode;

3.C语言运行库(由微软提供的)也支持这3种字符集
ASCII的数据类型为char(winnt.h中有typedef char CHAR);
Unicode(既宽字符)的数据类型为wchar_t(在wchar.h,string.h中有typedef unsigned short wchar_t);
   string.h中同时支持ANSI和Unicode,当参数为ANSI的函数前缀是str,参数为Unicode的函数的前缀是wcs;微软提供的C语言运行库中默认的字符串是ANSI,即字符串"我们"采用的是ANSI,L"我们"才是Unicode;

3.可以利用TCHAR.h和宏_UNICODE来无区别的调用ANSI和UNICODE参数的函数,_T这个宏将根据是否定义了_UNICODE宏来自动在俩者之间转换,
#define __T(x)       L ## x
#define __T(x)       x

4.windows程序的库:windows.h,winnt.h,
   Microsoft提供的C语言运行库:TCHAR.h,string.h
   在windows程序的库中,Unicode的宏是UNICODE
   在Microsoft提供的C语言运行库中,Unicode的宏是_UNICODE

5.在c中,char代表字节数据类型;在java中,char代表字符数据类型(内存可能占一个或倆个字节),byte代表字节数据类型;

6.C中,字符串char *代表的是ansi编码,ansi不是一种确定的编码,那些所有使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在繁体中文系统下,ANSI 编码代表 BIG5 编码,在日文操作系统下,ANSI 编码代表 JIS 编码;

7.UNICODE 包含了各种语言里面所使用到的所有字符,并为每一个字符赋予了一个唯一的序号。不论在什么平台下,什么程序中,不论用在什么语言里,UNICODE 对同一个字符赋予的序号总是相同的。与其他“字符集”不同的是,“UNICODE”并不代表一种“编码”,只代表一个“字符的集合”。用来给 UNICODE 字符集编码的标准有很多种,比如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等

8.在 UNICODE 被采用之前,计算机想要记录一段文字,内存中实际存放的内容是:按照指定编码规则得到的字节串。也就是按照 ANSI 编码方式存储在内存中的。比如:在中文 DOS, Windows 95, Windows 98 操作系统中,字符串 "中文123" 存放在内存中时,实际存放的是 [D6][D0][CE][C4][31][32][33] 这7个字节。('中' 和 '文' 分别占2个字节。)
    而在 UNICODE 被采用之后,计算机想要记录一段文字时,内存中不再存放根据特定编码而得到的字节串,而改为存放各个字符在 UNICODE 中的序号。比如:在 Windows NT/2000/XP, Linux, Java 系统中,字符串 "中文123" 存放在内存中时,实际记录的是 20013, 25991, 49, 50, 51 这5个序号。当不同语言中的字符需要同时表示时,不会因为编码冲突而无法表示。
    字符串实际所占内存空间的大小,要取决于当前系统采用多少字节来存放一个“序号”。如果使用2个字节存放一个序号,那么 "中文123" 在内存中就占10个字节。如果使用4个字节存放一个序号,那么 "中文123" 就占20个字节。

posted on 2009-04-30 15:39 游子 阅读(704) 评论(0)  编辑 收藏 引用 所属分类: 软件
只有注册用户登录后才能发表评论。

欢迎大家扔鸡蛋!送鲜花!

博客可以收入过千吗?

<2009年2月>
日一二三四五六25262728293031
123456789101112131415161718192021222324252627281234567

常用链接

留言簿(8)

随笔分类(314)

随笔档案(337)

文章分类(7)

文章档案(10)

相册

收藏夹(1)

其它

友情链接

数字电视

生活、旅游

自己的链接

计算机

搜索

  •  

积分与排名

  • 积分 - 408390
  • 排名 - 9

最新评论

阅读排行榜

评论排行榜