请问C++怎样读取UTF8编码?
例如我知道有个内存地址:0x400000里面的HEX数据是ut8编码的,,用什么方法可以以uf8编码方式把他读出来?谢谢了~...
例如我知道有个内存地址:0x400000里面的HEX数据是ut8编码的,,用什么方法可以以uf8编码方式把他读出来?谢谢了~
展开
1个回答
展开全部
把某地址里的数读出来,与编码没关系。
UTF8 是 8bit 码。你按 unsigned char 把 0x400000 里的内容 读出来就可以了。
题外讨论:
UTF8 字符编码 可能是 1 字节,可能是 2 字节,可能是 3 字节,可能是 4 字节组成。
假定 UTF-8编码中的任意字节B,
(1)如果B的第一位为0,则B为ASCII码,并且B独立的表示一个字符;
(2)如果B的第一位为1,第二位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的一个字节,并且不为字符的第一个字节编码;
(3)如果B的前两位为1,第三位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由两个字节表示;
(4)如果B的前三位为1,第四位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由三个字节表示;
(5)如果B的前四位为1,第五位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由四个字节表示;
按此原则,你可以写程序,读得一个UTF8 字符编码。
UTF8 是 8bit 码。你按 unsigned char 把 0x400000 里的内容 读出来就可以了。
题外讨论:
UTF8 字符编码 可能是 1 字节,可能是 2 字节,可能是 3 字节,可能是 4 字节组成。
假定 UTF-8编码中的任意字节B,
(1)如果B的第一位为0,则B为ASCII码,并且B独立的表示一个字符;
(2)如果B的第一位为1,第二位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的一个字节,并且不为字符的第一个字节编码;
(3)如果B的前两位为1,第三位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由两个字节表示;
(4)如果B的前三位为1,第四位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由三个字节表示;
(5)如果B的前四位为1,第五位为0,则B为一个非ASCII字符(该字符由多个字节表示)中的第一个字节,并且该字符由四个字节表示;
按此原则,你可以写程序,读得一个UTF8 字符编码。
追问
请问能不能简单说下这个算法,,,
例如0x400000的数据是{E6 80 9D E6 B2 99 E7 92 9E 00}
怎么获得这个UTF8字符编码?
追答
数据是{E6 80 9D E6 B2 99 E7 92 9E 00}
E6 -- 11100110 符合上述(4), 由 3 BYTEs 组成,所以
字符一: E6809D
接下来又是 E6, 符合上述(4), 由 3 BYTEs 组成,所以
字符二: E6B299
接下来是 E7 -- 1110 0111, 符合上述(4), 由 3 BYTEs 组成,所以
字符三: E7929E
00 结束
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询