发明内容
本发明针对现有技术中存在的缺陷或不足,提供一种在中文操作系统环境下的俄文字符编辑和显示方法及装置。所述方法及装置不仅解决了在中文操作系统环境下对源码中俄文字符进行编辑,运行结果显示不正常的问题,而且也使得对俄文的编辑和维护更加方便简单。
本发明的技术方案如下:
在中文操作系统环境下的俄文字符编辑和显示方法,其特征在于,包括以下步骤:
1)在中文操作系统环境下将俄文字符串编辑进程序源码,并存储;
2)利用预先建立的GB2312编码表和KOI8-R编码表中俄文字符的对应关系,对俄文字符串编码进行映射处理,获得符合KOI8-R编码表标准的俄文字符串编码;所述对应关系是指,在GB2312编码表标准中去掉俄文字符的第一个字节0xa7,利用特殊映射关系,即GB2312编码表和KOI8-R编码表标准中俄文字符编码的一一对应关系,将GB2312中的俄文编码映射到KOI8-R编码表中;
3)根据映射后的俄文字符串编码,利用目标系统图形库方法,正常显示俄文字符。
所述步骤1)中,在中文操作系统环境下将俄文字符串编辑进程序源码是指,在程序源码文件中直接编写俄文字符串,或者从EXCEL表格或其他文档中直接将俄文字符串拷贝粘贴到源码文件中;所述存储是指,使用无符号字节方式存储。
俄文字符的映射代码如下所示:
static unsigned char map[]=
{
0x00,0xe1,0xe2,0xf7,0xe7,0xe4,0xe5,0x00,
0xf6,0xfa,0xe9,0xea,0xeb,0xec,0xed,0xee,
0xef,0xf0,0xf2,0xf3,0xf4,0xf5,0xe6,0xe8,
0xe3,0xfe,0xfb,0xfd,0xff,0xf9,0xf8,0xfc,
0xe0,0xf1,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xc1,0xc2,0xd7,0xc7,0xc4,0xc5,0x00,
0xd6,0xda,0xc9,0xca,0xcb,0xcc,0xcd,0xce,
0xcf,0xd0,0xd2,0xd3,0xd4,0xd5,0xc6,0xc8,
0xc3,0xde,0xdb,0xdd,0xdf,0xd9,0xd8,0xdc,
0xc0,0xd1
}。
所述步骤3)中,利用目标系统图形库方法是指,使用ISO8859-1标准,将通过映射处理后的俄文字符串编码,利用目标系统的字符显示机制,调用KOI8-R字体,以正常显示俄文字符。
所述目标系统是具有显示屏的系统。
在中文操作系统环境下的俄文字符编辑和显示装置,其特征在于,包括编辑模块和显示模块,所述编辑模块是在中文操作系统环境下将俄文字符串编辑进程序源码,并存储;所述显示模块是通过GB2312编码表中俄文字符和KOI8-R编码表中俄文字符的对应关系映射表,以获得符合KOI8-R编码表标准的俄文字符串编码,并根据映射后俄文字符串编码,利用目标系统图形库方法,正常显示俄文字符;所述目标系统是具有显示屏的系统;所述对应关系是指,在GB2312编码表标准中去掉俄文字符的第一个字节0xa7,利用特殊映射关系,即GB2312编码表和KOI8-R编码表标准中俄文字符编码的一一对应关系,将GB2312中的俄文编码映射到KOI8-R编码表中。
本发明的技术效果如下:
本发明解决了开发人员过于依赖俄文环境的问题,并且可以独立在中文操作系统环境下对俄文进行编辑和维护,俄文字符串和其它字符串(如中文)均能正常显示,没有乱码,编辑和维护工作简单;而且在目标系统中能直接使用KOI8-R字体显示俄文,既符合俄语习惯,界面又美观。
具体实施方式
本发明的发明构思如下:在中文操作系统环境下俄文字符显示和编辑的方法,包括:将俄文字符串编辑进程序源码中,使用无符号字符字节方式存储,然后根据GB2312与KOI8-R标准中的俄文字符的对应关系,获得符合KOI8-R编码表标准的俄文字符串编码,最后利用目标系统图形库方法,使用ISO8859-1标准,调用KOI8-R字体来显示俄文字符。本发明在中文操作系统环境下对俄文字符串进行编辑,不仅解决了中文操作系统环境下编辑俄文,运行结果显示不正常的问题,而且也使程序开发人员对俄文的编辑和维护更加简单方便。
本发明涉及GB2312标准编码,在GB2312标准中俄文编码由两个字节组成,一个字节编码固定为0xa7,另一个字节编码如下表2所示。
在中文操作系统环境下,对俄文字符串进行编辑,根据GB2312与KOI8-R标准中的俄文字符的对应关系表,在目标系统中使用KOI8-R字体来显示俄文字符。
下表分别为KOI8-R标准中的俄文字符编码表和GB2312标准中的俄文字符第二个字节的编码表。
表1:KOI8-R标准中的俄文字符对应的编码表
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
C |
Ю |
a |
б |
ц |
д |
e |
ф |
г |
x |
и |
й |
к |
л |
M |
H |
o |
D |
п |
я |
p |
c |
T |
y |
ж |
B |
ь |
ы |
з |
ш |
э |
Щ |
ч |
Ъ |
E |
Ю |
A |
Б |
Ц |
Д |
E |
Φ |
Γ |
X |
И |
Й |
К |
Л |
M |
H |
O |
F |
∏ |
Я |
P |
C |
T |
y |
Ж |
B |
Ъ |
Ы |
З |
Щ |
Э |
Щ |
Ч |
Ъ |
表2:GB2312标准中的俄文字符第二个字节的编码表
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
A |
|
A |
Б |
B |
Γ |
Д |
E |
|
Ж |
З |
И |
Й |
К |
Л |
M |
H |
B |
O |
∏ |
P |
C |
T |
y |
Φ |
X |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ъ |
Э |
C |
Ю |
Я |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D |
|
a |
б |
B |
r |
д |
e |
|
ж |
з |
И |
Й |
к |
л |
M |
H |
E |
o |
п |
p |
c |
T |
y |
ф |
x |
ц |
ч |
ш |
щ |
ъ |
ы |
ь |
э |
F |
ю |
я |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
本方法在对俄文字符串进行显示时,对GB2312标准中的俄文字符编码进行解析,首先去掉俄文字符编码的第一个字节0xa7,利用特殊映射关系,即一一对应,将GB2312中的俄文编码(表2所示)映射到KOI8-R编码(表1所示),从而实现在中文操作系统环境下对俄文源码编辑,并且调用KOI8-R字体显示。其中映射表如下所示:
static unsigned char map[]=
{
0x00,0xe1,0xe2,0xf7,0xe7,0xe4,0xe5,0x00,
0xf6,0xfa,0xe9,0xea,0xeb,0xec,0xed,0xee,
0xef,0xf0,0xf2,0xf3,0xf4,0xf5,0xe6,0xe8,
0xe3,0xfe,0xfb,0xfd,0xff,0xf9,0xf8,0xfc,
0xe0,0xf1,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xc1,0xc2,0xd7,0xc7,0xc4,0xc5,0x00,
0xd6,0xda,0xc9,0xca,0xcb,0xcc,0xcd,0xce,
0xcf,0xd0,0xd2,0xd3,0xd4,0xd5,0xc6,0xc8,
0xc3,0xde,0xdb,0xdd,0xdf,0xd9,0xd8,0xdc,
0xc0,0xd1
}。
本发明解决了开发人员过于依赖俄文编码环境的问题,并且可以独立在中文环境下对俄文进行编辑和维护,俄文字符串和其它字符串(如中文)均能正常显示,没有乱码,编辑和维护工作简单;而且在目标系统中能直接使用KOI8-R字体显示俄文,既符合俄语习惯,界面又美观。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合具体实施步骤和附图,对本发明进一步详细说明。
图1示出了本发明在中文编辑环境下实现俄文显示和编辑的流程图。如图1所示,在中文操作系统环境下的俄文字符编辑和显示,包括以下主要流程:在中文环境下,获取俄文字符串编码并存储;利用GB2312与KOI8-R标准对应关系,对俄文字符串进行处理;根据目标系统图形库方法显示俄文字符。
图2是本发明中俄文字符串的映射处理流程图。下面结合图1-图2,说明在中文操作系统环境下的俄文字符编辑和显示的步骤流程。
步骤(1)
在中文操作系统环境下将俄文字符串编辑进程序源码中,可以从Excel表格或其它文档中直接拷贝粘贴到源码文件中,使用无符号字节方式存储。
步骤(2)
俄文字符串处理
使用函数unsigned char*gb2312_to_koi8(unsigned char*dst,unsigned char*src)实现,其中src为待处理的俄文字符串,dst为处理后的KOI8-R字符串:
a)申明一个临时字符缓冲区buf,申明两个临时指针指向src和buf:
unsigned char buf[]
unsigned char*p0=buf;
unsigned char*p1=src;
b)判断p1当前位置字节是否为src字符串末尾,若不是,则执行下一步,否则,跳出循环,执行步骤e;
c)判断p1当前位置字节值是否为0xa7,若值不等于0xa7,则将其赋值给p0指向位置,并将p0向前移动一个位置;
if(*p1′=0xa7){
*p0=*p1;
p0++;
}
d)将p1向前移动一个位置,返回步骤b;
e)将p0当前位置赋值末尾标志,p0位置重新指向buf开始位置,p1指向dst开始位置:
*p0=‘\0’;
p0=buf;
p1=dst;
f)判断p0当前位置字节是否为buf字符串末尾,若不是,则执行下一步,否则,跳出循环,将p1当前位置赋值末尾标志,返回dst;
g)将p0当前位置值减去0xa0后赋值给map数组当前位置,再将map数组当前位置值赋值给p1指向位置。
*p1=map[*p0-0xa0];
h)将p0、p1向前移动一个位置,返回步骤f;
步骤(3)
根据目标系统图形库方法,使用ISO8859-1标准,将gb2312_to_koi8函数处理后的字符串调用KOI8-R字体,就可显示标准俄文字符了,显示结果如图4所示。显然,图4是正常显示,图3是不正常显示。
应当指出,以上所述实施方式可以使本领域的技术人员更全面地理解本发明,但不以任何方式限制本发明。