请问C++怎样读取UTF8编码?

例如我知道有个内存地址:0x400000里面的HEX数据是ut8编码的,,用什么方法可以以uf8编码方式把他读出来?谢谢了~... 例如我知道有个内存地址:0x400000里面的HEX数据是ut8编码的,,用什么方法可以以uf8编码方式把他读出来?谢谢了~ 展开
 我来答
金色潜鸟
2012-07-12 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5533万
展开全部
把某地址里的数读出来,与编码没关系。
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 结束
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式