vc中是如何输出汉字

我们一半输出汉字,基本就是printf(“中文字符!n”);这个中文vc是怎样识别的,知道有ASCII码,里面是常用的256个字符,那么汉字是不是也有自己的什么码,可不可以不自己输入汉字字符,而通过其他手段输出,纯属好奇,希望高手解决一下,详细一点,如果是拷贝请留下链接即可,先感谢

ASCII码是表示字符的基本编码,由于它是8位字节编码,只能表示256个字符。事实上在早期,ASCII是7位,英文的主要字符都小于128,后来扩展到8位,用大于128的编码表示特殊图形标记。

当计算机进入中国后,面临汉字表示的问题,汉字的数目远大于256,于是中国制订GB2312编码。
GB2312是一个兼容7位ASCII的变长字节编码格式。所谓变长是指英文字符仍然使用单字节表示,而中文使用双字节表示,这样在一段中英文混排的文字当中,就有两种不同的字符字节长度。(这种方式给中英文字符处理带来很多麻烦,比如要统计一段文本的字符数,对于英文来说就是文本的字节长度,而对中英文混排就必须用专门的算法一个一个的统计)。
那么GB2312如何区分英文,中文呢?GB2312只兼容7位ASCII编码,不能表示大于128的特殊图形标记。这样英文字符都小于128。而中文则采用大于128的两个字节表示,就不会发生冲突了。当遇到一个小于128的字节时,那就是一个英文字符,当大于128时,就将当前字节以及其后跟随的字节看做一个整体,就是一个中文字符。目前在中文环境下VC中默认使用的编码方式就是GB2312以及扩展编码。GB2312的问题是只能局限于简体中文环境下使用。国际上后来制订了GBK编码,可以同时支持中、日、韩编码,属于局限于东亚的地区性编码。

随着计算机普及,人们越来越需要同时表示多种语言字符。国际上制订了Unicode编码标准,它能同时表达中文、日文、韩文、东西欧、英文等几乎所有文字。
Unicode主要分为UTF-32,UTF-16,UTF-8等类型。其中UTF-32是等长编码,每个字符都用32位4字节表示,但这样带来很大的空间浪费。UTF-16,UTF-8实际上是对UTF-32的改进压缩编码,属变长编码。特别是UTF-8是目前国际上应用最广泛的编码格式,最新的软件开发都应当以UTF-8为基础,以便支持多语言和国际化应用。

一般来说,软件中的文本分为程序文本和用户文本,比如在记事本软件中,菜单和提示框里面的文字都是在软件开发过程中就已经确定的,就是程序文本;用户文本是用户输入的数据,比如记事本中用书写的文章内容。

用户文本是用户使用软件时通过特定的输入法来输入,开发人员只需要将其保存为特定的编码格式就行了。

而程序文本是开发人员要关注的。目前的流行做法是,不推荐将文本以printf(“中文字符!n”);这样的形式直接写到代码中,因为这样以后要更改文本内容,或者支持其他语言提示时,要在整个代码中去修改这些字符串,不便于维护(有个项目,曾动用4名开发人员2周的时间,才把全部中文串替换成英文)。正常的做法是,将这些字符串集中保存在一个文本文件或其他类型资源文件中,需要输出提示时,通过字符串id的方式找到并加载对应的文本,然后再输出。
这样每次支持新的语言时,只要提供一个新的语言资源文件就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-06-06
VC中输出汉字一般是用cout<<"你要输出的汉字"<<endl;后面的那endl就相当于C语言中的“\n",换行用的,你说的那printf()这个事C语言风格的,不过VC兼容了C,所以也可以使用。其它的就一个关于输出的跟C语言的几乎是一样的。就只有这输出的方式不一样。
第2个回答  2009-06-07
汉字字符...占两个字节..第一个字节 ASCII 小于0 (或者说是大于128)
比如 char a[0]=240; “240是随便写的.
char a[1]=212;
char a[2]=0;
输出 printf(a);可能就会是一个汉字...

你可以在记事本中写上汉字..
按每个字节读取并转化成ASCII后输出就知道这些汉字的ASCII了
第3个回答  2009-06-07
我只能提示一点
中文字符是2个字节,16位,
//CString str ="中国";
//char p1 = str.GetAt(0);
//char p2 = str.GetAt(1);
char dd[3] ={-42, - 48};
cout<<dd<<endl;
这么写可以输出“中”字
相似回答