• 大小: 102KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-04
  • 语言: 其他
  • 标签: gb2312  usc2  

资源简介

字符转码,gb2312 usc2 ,utf-8 随意转换

资源截图

代码片段和文件信息

/*************************************************************
* 文件名称:gb2312_ucs2.c
* 功能描述: gb2312、ucs2间的转换
* 字节序:little-endian 低地址存低字节
**************************************************************/
#include 
#include 
#define BIT(x) ((0x01)<<(x))
typedef unsigned char uchar;
const unsigned short MAX_UNI_INDEX = 6808; /*6768*/

/*************************************************************
*功能: 十六进制基数码表
**************************************************************/
static const char radix_table[] = “0123456789ABCDEF“;

/*************************************************************
*功能: ucs2_gb2312_table码表
**************************************************************/
static const unsigned short ucs2_gb2312_table[][2];

/*************************************************************
* 语法格式:unsigned short gb2312_to_ucs2(unsigned short ucs2)
* 实现功能:gb2312转换为ucs2
* 参数: gb2312 待转换的gb2312编码
* 返回值: ucs2编码
**************************************************************/
unsigned short gb2312_to_ucs2(unsigned short gb2312)
{
int Index;

for(Index = MAX_UNI_INDEX - 1; Index >= 0; Index--)
{
if(gb2312 == ucs2_gb2312_table[Index][1])
return ucs2_gb2312_table[Index][0];
}
return 0;
}

/*************************************************************
* 语法格式:unsigned short ucs2_to_gb2312(unsigned short ucs2)
* 实现功能:ucs2转gb2312
* 参数: ucs2: 待转换的ucs2编码
* 返回值: gb2312编码
**************************************************************/
unsigned short ucs2_to_gb2312(unsigned short ucs2)
{
int left = 0;
int right = MAX_UNI_INDEX - 1;
int middle;

while(left <= right)
{
middle = (left+right)/2;
if (ucs2 == ucs2_gb2312_table[middle][0])
return ucs2_gb2312_table[middle][1];
if (ucs2 > ucs2_gb2312_table[middle][0])
left = middle + 1;
else
right = middle - 1;
}
/*如果找不到汉字,则使用全角的空格代替*/
return 0xFED7;
}

/*************************************************************
*功能:
* 说明:
* UTF-8以字节为单位对Unicode进行编码。
* 从Unicode到UTF-8的编码方式如下:
* Unicode编码(16进制) --> UTF-8 字节流(二进制) 
* U-00000000 ~ U-0000007F --> 0xxxxxxx  
* U-00000080 ~ U-000007FF --> 110xxxxx 10xxxxxx  
* U-00000800 ~ U-0000FFFF --> 1110xxxx 10xxxxxx 10xxxxxx  
* U-00010000 ~ U-001FFFFF --> 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx  
* U-00200000 ~ U-03FFFFFF --> 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx  
* U-04000000 ~ U-7FFFFFFF --> 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 
* 故根据每个汉字的第一个字节,便可以知道utf-8汉字由几个字节组成
*************************************************************/
int get_utf8_nbytes(unsigned char first_char)
{
unsigned char temp = 0x080;
int num = 0;

if(first_char < 0x80)
{
num = 1;
}
while (temp & first_char)
{
    num++;
//printf(“in Get num=%d\n“ num);
    temp = (temp >> 1);
}
return num;
}

/*************************************************************
* 语法格式:int utf8_to_ucs2(const char *utf8)
* 实现功能:utf-8字符串转换为unicode码
* 参数: utf utf-8字符串
* 返回值: unicode码码值
*************************************************************/
int utf8_to_ucs

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     476664  2017-05-26 10:44  encoding\gb2312_ucs2.c

     文件       3143  2012-12-31 15:15  encoding\gb2312_ucs2.h

     文件      35224  2014-03-05 15:20  encoding\gb2312_ucs2.o

     目录          0  2017-05-06 20:17  encoding

----------- ---------  ---------- -----  ----

               515031                    4


评论

共有 条评论