资源简介
字符转码,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
相关资源
- gb2312内码 可用于显示汉字
- UTF-8编码转BIG5、gb2312
- GB2312转到UTF8工具
- GB2312汉字 字频和拼音
- 1212汉字字模bin文件GB2312
- ucGUI-gb2312汉字生成器v9.0.zip
- 批量文件编码转换工具Utf-8转GB2312、
- 汉字编码转换工具(汉字与utf-8转换
- fangsong_GB2312
- 楷体字体kaiti_GB2312
- 楷体_GB2312.ttf 和 仿宋_GB2312.ttf
- gb2312汉字列表
- GB2312字体库
- Office word for Mac 仿宋_GB2312字体包
-
Nativexm
l支持GB2312中文编码 - gb2312和utf8相互转换
- GB2312简体中文编码表+Unicode汉字编码表
- ucgui字体生成器v8.0
评论
共有 条评论