‘壹’ 如何显示汉字
在C程序中显示汉字
在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢?
下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。
内码转换成区位码方法如下:
qh=c1-0xa0 wh=c2-0xa0
其区位码就是:
qw=qh*0xff+wh
该汉字在字库中离起点的位置是:
offset=(94*(qh-1)+(wh-1))*32L
程序例:
#include 〈graphics.h〉
#include 〈stdio.h〉
#include 〈fcntl.h〉
#include 〈io.h〉
#include 〈stdlib.h〉
#include 〈conio.h〉
#define ROW 1 //纵坐标放大倍数
#define COL 2 //横坐标放大倍数
void main()
{
int x,y;
char *s=〃汉字显示程序〃;
FILE *fp;
char buffer[32]; //buffer用来存储一个汉字
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm; //图形屏幕初始化
initgraph(&gd,&gm,〃 〃);
if ((fp=fopen(〃hzk16〃,〃rb〃))==NULL)
//打开汉字库,该字库可以在ucdos中找到
{ printf(〃Can't open haz16,Please add it〃);
getch(); closegraph(); exit(0);
}
x=20; y=100; //显示位置设置
while(*s)
{ qh=*(s)-0xa0; //汉字区位码
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L; //计算该汉字在字库中偏移量
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp); //取出汉字32字节的点阵字模存入buffer中(一个汉字)
for (i=0;i〈16;i++) //将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字
for(n=0;n〈ROW;n++)
for(j=0;j〈2;j++)
for(k=0;k〈8;k++)
for(m=0;m〈COL;m++)
if (((buffer[i*2+j]〉〉(7-k))&0x1)!=NULL)
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);
s+=2; //因为一个汉字内码占用两个字节,所以s必须加2
x+=30;
}
getch();
closegraph();
}
上述程序在Turbo C 2.0编译系统下运行成功,它可以将汉字放大显示,读者可以将它改成函数用在您的程序中显示汉字。
‘贰’ 显示或打印汉字时,系统使用的是汉字的什么
显示或打印汉字时,系统使用的是汉字的字形码。
在需要输出一个汉字时,首先要根据该汉字的机内码找出其字模信息在汉字库中的位置,然后取出该汉字的字模信息在屏幕上显示或打印出来。
汉字通常是以点阵形式形成字形,因此要对汉字进行点阵式的编码。
(2)显示汉字时系统需要汉字编译嘛扩展阅读
汉字字型码通常有两种表示方式:点阵和矢量表示方法。
用点阵表示字型时,汉字字型码是这个汉字字型点阵的代码。根据输出汉字的要求不同,点阵的多少也不同。简易型汉字为16*16点阵,提高型汉字为24*24点阵,32*32点阵,48*48点阵等等。
点阵规模愈大,字型愈清晰美观,所占存储空间也愈大。
矢量表示方式存储的是描述汉字字型的轮廓特征,当要输出汉字时,通过计算机的计算,由汉字字型描述生成所需大小和形状的汉字点阵。矢量化字型描述与最终文字显示的大小,分辨率无关,因此可以产生高质量的汉字输出。
‘叁’ 汉字在计算机中输入、存储并被显示这一过程的基本原理
汉字输入首先的前提是当前的操作系统必须支持中文系统。
当你输入汉字,实际你输入的是汉字编码,编码原则由你所用的输入法决定,当编码输入后由系统在对应的汉字码表文件中搜索并显示由该编码所对应的汉字。所以说汉字的输入实际由码表文件所控制的,有些输入法的码表文件可由输入法控制增加词条,当你输入码表内不存在的词组时系统会自动记录这个词组并将你输入这个词组时的编码同时记录,这样下次你就可以用这个编码输入词组了,注意这里的词组不是简单意义的我们所用的词组,而是任意单字组合产生的新词组哪怕是根本没有什么联系的单字。因此汉字的输入关键在于码表文件的建立。
‘肆’ ASCII码和汉字编译的概念
ASCII(():美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。汉字编码(Chinesecharacterencoding)是为汉字设计的一种便于输入计算机的代码。
由于电子计算机现有的输入键盘与英文打字机键盘完全兼容。因而如何输入非拉丁字母的文字(包括汉字)便成了多年来人们研究的课题。汉字信息处理系统一般包括编码、输入、存储、编辑、输出和传输。编码是关键。不解决这个问题,汉字就不能进入计算机。GB2312-80是1980年制定的中国汉字编码国家标准。共收录7445个字符,其中汉字6763个。GB2312兼容标准ASCII码,采用扩展ASCII码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为1。《汉字内码扩展规范》(GBK)于1995年制定,兼容GB2312、GB13000-1、BIG5编码中的所有汉字,使用双字节编码,编码空间为0x8140~0xFEFE,共有23940个码位,其中GBK1区和GBK2区也是GB2312的编码范围。
‘伍’ (操作系统) 汉字是如何显示在电脑屏幕上的
汉字是经系统将其机内码和字体、字号等二进制数据索引对应的汉字字库,按一定的编排方式,通过显卡将电脑的数字信号转换成模拟信号让显示器显示出来的。
1)汉字编码系统,就是汉字编码系列的集合。它具有共同的编码模式,统一的拼写代码,从共同的初始编码出发,演化出一个个相互联系、相互演化的汉字编码系列,将这些汉字编码系列集合起来,就组成一个汉字编码系统。操作系统的一个重要组成部分。
2)汉字机内码,又称“汉字ASCII码”,简称“内码”,指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码。输入码被接受后就由汉字操作系统的“输入码转换模块”转换为机内码,与所采用的键盘输入法无关。机内码是汉字最基本的编码,不管是什么汉字系统和汉字输入方法,输入的汉字外码到机器内部都要转换成机内码,才能被存储和进行各种处理。
3)显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。显卡作为电脑主机里的一个重要组成部分,是电脑进行数模信号转换的设备,承担输出显示图形的任务。显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来,同时显卡还是有图像处理能力,可协助CPU工作,提高整体的运行速度。
‘陆’ 显示或打印汉字时,系统使用的是汉字的什么码
字形码!!!在需要输出一个汉字时,首先要根据该汉字的机内码找出其字模信息在汉字库中的位置,然后取出该汉字的字模信息在屏幕上显示或打印出来。汉字通常是以点阵形式形成字形,因此要对汉字进行点阵式的编码。
‘柒’ 显示或打印汉字时,系统使用的是汉字的_____。
B字形码
在需要输出一个汉字时,首先要根据该汉字的机内码找出其字模信息在汉字库中的位置,然后取出该汉字的字模信息即字形码在屏幕上显示或打印出来。
用点阵表示字型时,汉字字型码指的是这个汉字字型点阵的代码。根据输出汉字的要求不同,点阵的多少也不同。简易型汉字为16*16点阵,提高型汉字为24*24点阵,32*32点阵,48*48点阵等等。
(7)显示汉字时系统需要汉字编译嘛扩展阅读:
即:字节数=点阵行数×点阵列数/8
用于打印的字库叫打印字库,其中的汉字比显示字库多,而且工作时也不像显示字库需调入内存。
全部汉字字形码的集合叫汉字字库。汉字库可分为软字库和硬字库。软字库以文件的形式存放在硬盘上,现多用这种方式,硬字库则将字库固化在一个单独的存储芯片中,再和其它必要的器件组成接口卡,插接在计算机上,通常称为汉卡。
‘捌’ 汉字信息处理过程中需要使用哪些汉字编码各自的作用是什么
输入码(数字编码,拼音编码,字形编码)区位码,国标码,机内码,字形码(点阵和矢量)以及其他编码:GBK码,BIG5码,通用字符集和Unicode。
作用:
输入码:为了直接用西文标准键盘将汉字输入计算机
区位码和国标码:计算机内部处理的信息,都是用二进制代码表示的,汉字也不例外。而二进制代码使用起来是不方便的,于是需要采用信息交换码。区位码是国标码的另一种表现形式,把国标GB2312--80中的汉字、图形符号组成一个94×94的方阵,分为94个“区”,每区包含94个“位”,其中“区”的序号由01至94,“位”的序号也是从01至94。94个区中位置总数=94×94=8836个,其中7445个汉字和图形字符中的每一个占一个位置后,还剩下1391个空位,这1391个位置空下来保留备用。
机内码:计算机内部加工处理汉字所用的编码,无论什么输入法输入的汉字,在存入存储器时都将其转化为统一的机内码。
字形码:用于在显示器或打印机上输出各种字体,字号的文字和符号。
‘玖’ 计算机里的每一个文字是不是都有对应的二进制而我在Word文档每输入一个文字,是不是会经过系统编译
文字在电脑中有三个码,系统编辑的过程中是没有编译的。编译是将程序代码进行翻译为二进制,高级程序语言设计的程序要运行的时候才需要编译。
1、外码也叫输入码,是用来将汉字输入到计算机中的一组键盘符号。英文字母只有26个,可以把所有的字符都放到键盘上,而使用这种办法把所有的汉字都放到键盘上,是不可能的。所以汉字系统需要有自己的输入码体系,使汉字与键盘能建立对应关系。目前常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等,一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点,每个人可根据自己的需要进行选择。在后面的章节中,重点介绍智能全拼输入法和五笔字型输入法。
2、机内码 根据国标码的规定,每一个汉字都有了确定的二进制代码。
3、字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中。为了能准确地表达汉字的字形,对于每一个汉字都有相应的字形码,目前大多数汉字系统中都是以点阵的方式来存储和输出汉字的字形。所谓点阵就是将字符(包括汉字图形)看成一个矩形框内一些横竖排列的点的集合,有笔画的位置用黑点表示,没笔画的位置用白点表示。在计算机中用一组二进制数表示点阵,用0表示白点,用1表示黑点。一般的汉字系统中汉字字形点阵有16×16、24×24、48×48几种,点阵越大对每个汉字的修饰作用就越强,打印质量也就越高。通常用16×16点阵来显示汉字,每一行上的16个点需用两个字节表示,一个16×16点阵的汉字字形码需要2×16=32个字节表示,这32个字节中的信息是汉字的数字化信息,即汉字字模。下面以“口”为例看看16×16点阵字形是怎样存放的。