解決libxml2不支援中文的問題

2021-08-21 23:27:35 字數 1539 閱讀 6900

使用libxml2處理xml檔案時,預設載入是使用utf-8編碼,所以在修改和儲存為gb2312編碼時,需要將資料轉換為utf-8編碼,然後再進行修改和儲存!

轉換使用iconv,以下是轉換**

char * convertenc( char *encfrom, char *encto, const char * in)

iconv(c_pt, null, null, null, null);

lenin = strlen(in) + 1;

lenout = 1024;

sin = (char *)in;

sout = bufout;

ret = iconv(c_pt, &sin, (size_t *)&lenin, &sout, (size_t *)&lenout);

if (ret == -1)

iconv_close(c_pt);

return bufout;}

以下是例項

test.xml

<?xml version="1.0" encoding="gb2312"?>

測試讀取**

int main(void)

修改、儲存**

test2.xml

<?xml version="1.0" encoding="gb2312"?>

john fleck

june 2, 2002

我來也 example keyword

《書目》 c++

this is the headline

this is the body text.

xmldocptr

parsedoc(char *docname, char *uri)

cur = xmldocgetrootelement(doc);

if (cur == null)

if (xmlstrcmp(cur->name, (const xmlchar *) "story"))

newnode = xmlnewtextchild (cur, null, (xmlchar *)"reference", null);

newattr = xmlnewprop (newnode, (xmlchar *)"uri", (xmlchar *)uri);

return(doc);}

int main(int argc, char ** argv )

return 0;}

執行 xmlout gb2312 test2.xml 結果

<?xml version="1.0" encoding="gb2312"?>

john fleck

june 2, 2002

我來也 example keyword

《書目》 c++

this is the headline

this is the body text.

解決libxml2不支援中文的問題

使用libxml2處理xml檔案時,預設載入是使用utf 8編碼,所以在修改和儲存為gb2312編碼時,需要將資料轉換為utf 8編碼,然後再進行修改和儲存!轉換使用iconv,以下是轉換 char convertenc char encfrom,char encto,const char in i...

linux vi 不支援中文

問題說明 網頁html與chi語言的結合,使用c語言輸出html語句,因為其中用到中文,出現亂碼 問題解決 1.在cgi中用到的 使用utf 8編碼,utf 8是國際統一的中文編碼 具體語句為 fprintf cgiout,metacharset utf 8 參考文章 2.上述步驟完成後,重新編譯,...

svn不支援中文路徑問題的解決

s vn的授權檔案authz預設是不支援中文路徑的,因此在精確控制中文資料夾的授權時往往會出錯。要解決這個問題,需要用ultraedit 注意不要用記事本或寫字板 把authz開啟,然後另存在為 utf 8 無bom,如下圖 然後把另存在的authz檔案覆蓋原有的authz檔案。用記事本或寫字板開啟...