linux下libxml如何支持中文格式的显示。

来源:互联网 发布:果树修剪软件视频 编辑:程序博客网 时间:2024/06/08 17:48

基础知识:

               1、要明白libxml库下是以utf-8格式来保存xml文件的。

               2、 需要明白在调试程序时,使用的终端其支持那种格式的编码,不同的终端支持的编码格式是不同的。(否则会出现乱码)。


一个linux下自带的编码转换函数:

            iconv( ...................................................);

自写的转换函数:

/*
    功能  : 编码转换函数
    参数1 : 被转换的编码
    参数2 : 转换的目标编码
    返回值: 转换过后的目标编码字符串
*/

char *convert(char *encFrom, char *encTo, const char *in)
{
static char bufin[1024], bufout[1024], *sin, *sout;
int mode, lenin, lenout, ret, nline;
iconv_t c_pt;

if ((c_pt = iconv_open(encTo, encFrom)) == (iconv_t)-1)
{
printf("iconv_open false: %s ==> %s/n", encFrom, encTo);
return NULL;
}
iconv(c_pt, NULL, NULL, NULL, NULL);
lenin = strlen(in) + 1;
lenout = 1024;
sin    = (char *)in;
sout   = bufout;
ret = iconv(c_pt, &in, (size_t *)&lenin, &sout, (size_t *)&lenout);
if (ret == -1)
{
return NULL;
}
iconv_close(c_pt);
return bufout;

}



我在调试程序时,理清楚的内容:

虚拟机ubuntu下的终端支持utf-8的编码格式;

在ultraedit中编写时使用的编码为gb2312

开发板的终端支持gb2312格式

而保存在xml文件中的格式为utf-8格式。


所以如果是在ubuntu下的终端调试程序时,你还将xml文件的utf-8格式的文件转换为gb2312的话,打印出来的就成乱码了。

如果 你在开发板上不将utf-8 格式的编码转换成gb2312格式的话,其也会成乱码。

原创粉丝点击