新闻  |   论坛  |   博客  |   在线研讨会
俄文866编码及其与ANSI编码的转换(ZT)
beibeidong | 2008-07-04 17:42:20    阅读:7015   发布文章

 

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщыьэюяёъ
(俄文866编码,用一个字节表示,在WORD中用西里尔文(DOS))
80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9b 9c 9d 9e 9f a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 eb ec ed ee ef f1 ea
(ANSI编码,用两个字节表示,高字节全是A7,此处只写出低字节)
a1 a2 a3 a4 a5 a6 a8 a9 aa ab ac ad ae af b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bd be bf c0 c1 d1 d2 d3 d4 d5 d6 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ed ee ef f0 f1 d7 ec

除几个特别的字母外,ANSI编码的低字节都可以用866编码的字节加上一个偏移量来得到,下面是一个简单的C语言实现:

unsigned char ru2ansi(unsigned char rch)
{
    if(rch >= 0x80 && rch <= 0x85)
        return(rch + 0x21);
    else if(rch >= 0x86 && rch <= 0x9f)
        return(rch + 0x22);
    else if(rch >= 0xa0 && rch <= 0xa5)
        return(rch + 0x31);
    else if(rch >= 0xa6 && rch <= 0xaf)
        return(rch + 0x32);
    else if(rch >= 0xe0 && rch <= 0xef)
        return(rch + 0x02);
    else if(rch == 0xf1)
        return(0xd7);
    else
        return(rch);
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
qingcai [ 匿名]  2008-10-09 03:47:21 

推荐文章
最近访客