体育资讯网

您现在的位置是:首页 > 分类12 > 正文

分类12

utf16转utf8源码(utf16编码转换中文)

hacker2022-06-09 00:54:17分类1275
本文目录一览:1、utf-8编码转utf-16编码的算法是?

本文目录一览:

utf-8编码转utf-16编码的算法是?

比如一个三字节的UTF8编码为:

1110ABCD 10EFGHIJ 10KLMNOP

那么它对应的UTF16编码就是:

ABCDEFGH IJKLMNOP

其实你的那个例子反着写就是UTF8变换UTF16的例子:

11100110 10110001 10001001 = E6 B1 89

变换回UTF16就是

01101100 01001001 = 6C 49

求:C语言utf8转utf16详细源码和教程

哈哈,选我吧!运气不错,不就前做过这个,不过是C++的稍微改了一下,给你看能不能用

请先阅读一下给你的参考网址

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

voidUtf162UTF8(constwchat_tszIn[],intnSourceLen,charszOut[])

{

unsignedcharfirstchar=0;//临时变量存储3字节utf-8编码的三个字节中的一个

unsignedcharsecondchar=0;//同上

unsignedcharthirdchar=0;//同上

wchat_tvalue=0;

intindex=0;//将转换过的字符存入szOut的索引

for(inti=0;i=0x0080(unsignedchar)szIn[i]6)0xef)|0xc0;

secondchar=(value0x3f)|0x80;

szOut[index++]=firstchar;

szOut[index++]=secondchar;

}

//同两字节utf-8编码这里进行的操作即为将后面的[1110xxxx10xxxxxx10xxxxxx]中的16位x分别取出来然后组成一个16位的数,既为utf-16编码

elseif((unsignedchar)szIn[i]=0x0800(unsignedchar)szIn[i]12)|0xe0;

secondchar=((value6)0x3f)|0x80;

thirdchar=(value0x3f)|0x80;

szOut[index++]=firstchar;

szOut[index++]=secondchar;

szOut[index++]=thirdchar;

}

}

}

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

voidUTF82utf16(constchar*szIn,wchat_tszOut[])

{

wchar_tvalue=0;//

unsignedcharfirstchar=0;//临时变量存储3字节utf-8编码的三个字节中的一个

unsignedcharsecondchar=0;//临时变量存储3字节utf-8编码的三个字节中的一个

unsignedcharthirdchar=0;//临时变量存储3字节utf-8编码的三个字节中的一个

intindex=0;

for(unsignedinti=0;i=127//若字符不是普通字符则对齐进行解码,

(unsignedchar)szIn[i+1]=127//判断后面的2个字符是否也不是普通字符若都不是则为3字节utf-8编码

(unsignedchar)szIn[i+2]=127)//此过程为上面编码过程的逆过程

{

firstchar=szIn[i];

secondchar=szIn[i+1];

thirdchar=szIn[i+2];

value=(firstchar0x1f)=127

(unsignedchar)szIn[i+1]=127)

{

firstchar=szIn[i];

secondchar=szIn[i+1];

value=(firstchar0x1f)6;brvalue|=(secondchar0x3f)

szOut[index++]=value;

i+=2;

}

else

{

szOut[index++]=value;

++i;

}

}

}

代码写得不好,见谅

有问题Email:jarvisvictory@gmail.com

两个字符的utf-16怎么转utf-8-CSDN论坛

先转 UTF32, 再正常转 UTF8, UTF8 最好还是只支持到 U+10FFFF, 不然有些字符在 UTF16 下无法表示...

c1 = read_UTF16();

if(c1 = 0xD800 c1 = 0xDFFF)

{ /* Surrogate Area */

if(c1 = 0xDC00)

return invalid .......

c2 = read_UTF16();

if(0 == c2)

return wouldblock.... or invalid ....

if(c2 0xDC00 || c2 0xDFFF)

return invalid .......

ucs4_ch = (c2 0x03FF) + (((c1 0x03FF) + 0x40) 10);

}

发表评论

评论列表

  • 颜于南殷(2022-06-09 07:49:23)回复取消回复

    nvalid ....if(c2 0xDC00 || c2 0xDFFF)return invalid .......ucs4_ch = (c2 0x03FF) + (((c1 0x03FF)

  • 边侣倾弋(2022-06-09 02:05:52)回复取消回复

    0x0080(unsignedchar)szIn[i]6)0xef)|0xc0;secondchar=(value0x3f)|0x80;szOut[index++]=firstchar;szO

  • 孤央鸢栀(2022-06-09 11:31:21)回复取消回复

    econdchar0x3f)szOut[index++]=value;i+=2;}else{szOut[index++]=value;++i;}}}代码写得不好,见谅有问题Email:jarvisvictory@gmail.com两个字符的utf-16怎么转utf-8