程序代码如下:
/** \brief
* 以下实现都是Big Endian格式
* 返回值为utf16字符的长度
* attention :UTF16还能表示一部分的UCS-4代码点
* 这里为了简便就没有添加到代码中
* 因此这里的UTF16其实是UCS-2
* \param dest char* 目标字符串数组首地址
* \param src const char* 源字符串数组首地址
* \param destMaxLen int 目标字符串数组最大长度,防止越界
* \return int 目标字符串的长度
*
*/
int utf8ToUtf16(char *dest,const char *src,int destMaxLen)
{
int destLen=0; //记录目标字符串的长度
int i=0;
char temp;
while(i<strlen(src))
{
if(destMaxLen-destLen>=2)
{
if ((src[i] | '\x7f')=='\x7f')
//U+0000-U+007F
{
dest[destLen++]=0x00;
dest[destLen++]=src[i];
i=i+1;
//源串移动一位
}
else if((src[i] | '\x1f')=='\xdf')
//U+0080-U+07FF
{