牛骨文教育服务平台(让学习变的简单)
博文笔记

c语言下汉字转换(字符串改为utf-8编码)

创建时间:2014-08-18 投稿人: 浏览次数:7195

相信大家应该都知道,汉字经过utf-8后转码会变成一串字串,其中以/分割,如:xE7x98x91............,其中每三个/(十六进制)代表一个汉字,也就是一个汉字转换为了三个字节。

一般情况下,我们只需要复制这段字串,初始化到一个指针,在做输出就可以显示相应的汉字,这是因为在这段初始化过程中,已经自动将/识别(认为是十六进制),并将每个十六进制放入一个字节中,这样就可以正常的显示汉字,但是有时候我们通过一些别的方式来截取的字段,直接输出是无法获得这种效果的,因此就需要我们做一些转换来将其显示出来。

首先我们要明白,我们现在需要做的就是将每个/后面相应的字串改为十六进制,然后在将其以一个字节的方式存入数组中,理解了这种方式自然就很容易写出来了。

请看下面函数:

static char *stohex(const char *buf)

{

char src[2048] = {0};

char buf_temp[20148] = {0};

int x = 0;

unsigned long i;

while(*buf != "")

{

if(*buf == "\")

{

strcpy(buf_temp,buf);

*buf_temp = "0";

*(buf_temp + 4) = "";

i = strtoul(buf_temp, NULL, 16);

src[x] = i;

buf += 3;

}

else

{

src[x] = *buf;

}

x++;

buf++;

}

src[x] = "";

return src;

}

这个函数的主要功能就是实现了这个转换,理解原理实现起来就很简单。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。