UNICODE编码之小端

来源:互联网 发布:遍历所有子节点 js 编辑:程序博客网 时间:2024/05/22 14:43
#include <config.h>#include <encoding_manager.h>#include <string.h>static int isUtf16leCoding(unsigned char *pucBufHead);static int Utf16leGetCodeFrmBuf(unsigned char *pucBufStart, unsigned char *pucBufEnd, unsigned int *pdwCode);static T_EncodingOpr g_tUtf16leEncodingOpr = {.name          = "utf-16le",.iHeadLen   = 2,.isSupport     = isUtf16leCoding,.GetCodeFrmBuf = Utf16leGetCodeFrmBuf,};static int isUtf16leCoding(unsigned char *pucBufHead){const char aStrUtf16le[] = {0xFF, 0xFE, 0};//文本头 if (strncmp((const char *)pucBufHead, aStrUtf16le, 2) == 0){/* UTF-16 little endian */return 1;}else{return 0;}}static int Utf16leGetCodeFrmBuf(unsigned char *pucBufStart, unsigned char *pucBufEnd, unsigned int *pdwCode){if (pucBufStart + 1 < pucBufEnd){*pdwCode = (((unsigned int)pucBufStart[1])<<8) + pucBufStart[0];//高字节为字符的高字节 return 2;}else{/* 文件结束 */return 0;}}int  Utf16leEncodingInit(void){AddFontOprForEncoding(&g_tUtf16leEncodingOpr, GetFontOpr("freetype"));AddFontOprForEncoding(&g_tUtf16leEncodingOpr, GetFontOpr("ascii"));return RegisterEncodingOpr(&g_tUtf16leEncodingOpr);}

原创粉丝点击