Home首页 Treo吹友吧 BlackBerry iPhone 下载中心 English 数码商城 电信镜像 网通镜像 美国镜像 更多镜像
 
广告:Palm 全系列特价 中关村实体店华宇科技—全系列(palm)PDA批发北京小孟palm专卖中关村实体店
发新话题
打印

[CDMA短信] unicode码表和转换程序

unicode码表和转换程序

大牛们拿去研究看能应用上不能,节省时间出成绩啊,呵呵


unicode到gbk的转换程序
unsigned char Unicode_to_GBK(unsigned char *ch)
{
        unsigned int temp;
        unsigned int sector_offset;//扇区偏移
        unsigned int byte_offset;//字节偏移
        unsigned char buffer[512];
        temp = *((unsigned int*)ch);//由于FAT中文件民unicode码是 地字节在前,所以要按uint型读
        temp -= 0x4e00;//减去基础数据
        temp *= 2;//每个汉字两个字节
        sector_offset = temp/BytesPerSector;//计算出扇区偏移,确定存在哪个扇区
        byte_offset = temp%BytesPerSector;//存在哪个字节
        if(FAT_ReadSector(UNI2GBK + sector_offset,buffer))return 1;//读那个扇区
        *ch = buffer[byte_offset];//将数据读出
        *(ch+1) = buffer[byte_offset+1];
        return 0;
}
要注意的是FAT中文件名的存放方式是低字节在前,而gbk的存放是高字节在前,操作时不要搞混了。




附件1是两个字库


两者之间的转化这能通过查表,两者没有对应关系。所以要建一张unicode-2312的对照表。
当然如过想节省程序运行时间,要建两张表,分别按照各自的线性关系放,这样就免去查找的所耗的时间了。但是这样字库就会变大。我觉得用空间去换取速度可行。

附件2是两个转换好的码表

uni2gbk.sys为unicode转gbk的表,从unicode的0x4e00 到0x9fa5 顺序存放着相应的gbk码,总共20902个汉字,对应的文件是41804Bytes
注:由于没有找到一些符号的unicode对照表,因此这张表中只包含了汉字部分。因此不能显示诸如“”()等符号,程序中要做相应处理。
注文件存放方式是高字节在前 比如0x4e00 存放方式为0x4e 0x00

gbk2uni.sys为gbk转unicode的表,从gbk的0x8140 到0xfeff 即126*192 = 24192按照gbk的编码顺序放,为了线形查找,其中不合法的或根据资料没有相应unicode码的都作了填零处理。文件大小为48384Bytes
注文件存放方式是高字节在前 比如0x4e00 存放方式为0x4e 0x00
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • ILOVERED 威望 +10 谢谢分享 2008-9-4 15:49
palm中文编码规则可以参看下面官方介绍

http://kb.palmsource.com/cgi-bin ... fc2VhcmNoX3RleHQ9Y2
附件: 您所在的用户组无法下载或查看附件
发新话题
推荐商品 热销商品