青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-59  評(píng)論-36  文章-0  trackbacks-0
(寫次筆記的目的除了對(duì)知識(shí)點(diǎn)進(jìn)行筆記外,還有就是希望能夠幫助和我一樣有遇到類似問題的朋友。)

剛接觸tinyxml時(shí),對(duì)于編碼問題沒怎么注意,但就是這個(gè)沒有被我注意的問題,在暗地里向我放“黑槍”,耗了我不少時(shí)間。

現(xiàn)在就來說說我遇到的問題,以及我的解決方法。

如有不對(duì)的地方,懇請(qǐng)指正,小弟在這先謝謝了。

對(duì)于如下代碼,
void?Write()
{
????TiXmlDocument?doc?;
????doc.LinkEndChild(
new?TiXmlDeclaration("1.0"?,?"utf-8",""));
????TiXmlElement?
*pele?=?new?TiXmlElement("ROOT");
????TiXmlElement?
*psubele?=?new?TiXmlElement("First-element");

????psubele
->LinkEndChild(new?TiXmlText("測(cè)試"));
????pele
->LinkEndChild(psubele);
????doc.LinkEndChild(pele);

????doc.SaveFile(
"test.xml");
}

生成的test.xml文件如果直接用IE查看,則會(huì)提示說遇見無效字符。之所以這樣是因?yàn)椋?dāng)文件進(jìn)行保存時(shí),文件的實(shí)際編碼是ansi,而在ie進(jìn)行解讀時(shí)會(huì)根據(jù)聲明中指定的編碼utf-8來進(jìn)行解釋,對(duì)于英文字母來說utf-8和ansi是兼容的,但因?yàn)槠渲杏袧h字,所以用utf-8來解釋編碼為ansi的漢字就會(huì)出現(xiàn)亂碼的問題,從而使得ie提示說遇見無效字符。

而解決的方法是,將寫入的中文字符串轉(zhuǎn)為utf-8編碼
void?Write()
{
????TiXmlDocument?doc?;
????doc.LinkEndChild(
new?TiXmlDeclaration("1.0"?,?"utf-8",""));
????TiXmlElement?
*pele?=?new?TiXmlElement("ROOT");
????TiXmlElement?
*psubele?=?new?TiXmlElement("First-element");

????
const?char????*src?=?"測(cè)試";
????
char????????dst[100]?=?{0};
????size_t????????src_len?
=?strlen(src);
????size_t????????dst_len?
=?sizeof(dst);
????
const?char????*in?=?src;
????
char????????*out?=?dst;
????iconv_t????????cd;

????
/*?將GB2312字符集轉(zhuǎn)換為UTF-8字符集?*/
????cd?
=?iconv_open("UTF-8","GB2312"?);?
????
if?((iconv_t)-1?==?cd)
????{
????????
return?;
????}

????iconv(cd,?
&in,?&src_len,?&out,?&dst_len);
????iconv_close(cd);


????psubele
->LinkEndChild(new?TiXmlText(dst));
????pele
->LinkEndChild(psubele);
????doc.LinkEndChild(pele);

????doc.SaveFile(
"test.xml");
}
進(jìn)行轉(zhuǎn)換之后,就可以在IE中顯示xml文件內(nèi)容了。

P.S.:如果無所謂是否將xml文件顯示在瀏覽器中,下面的兩個(gè)問題就不再那么重要了。

但是,對(duì)寫入的漢字進(jìn)行編碼轉(zhuǎn)換后又會(huì)帶來兩個(gè)問題:
第一個(gè),對(duì)于用utf-8編碼的xml文件,如果需要在控制臺(tái)中顯示xml中的漢字,則又得將utf-8轉(zhuǎn)為gb2312編碼,否則控制臺(tái)中將是一堆亂碼;
第二個(gè),對(duì)于具有如下內(nèi)容的xml文件且文件實(shí)際編碼也為UTF8,
<?xml?version="1.0"?encoding="utf-8"??>
<ROOT>
????
<名字>測(cè)試</名字>
</ROOT>

如果用如下所示的方法來讀取節(jié)點(diǎn)“名字”,只會(huì)輸出error字樣,而不是“名字”。
void?find()
{
????TiXmlDocument?doc;
????doc.LoadFile("test.xml");
????TiXmlElement?*pEle?=?doc.RootElement();
????TiXmlElement?*pchild?=?pEle->FirstChildElement("名字");

????if?(!pchild)
????{
????????cout?
<<?"error"<<endl;
????????return?;
????}
????cout<<pchild-
>Value()<<endl;
}
因?yàn)楹瘮?shù)find中的"名字"并不是UTF8編碼,"名字"的實(shí)際編碼可能是ANSI編碼(我也不敢確定),所以xml文件中以UTF8進(jìn)行編碼的“名字”和find函數(shù)中以非UTF8編碼的“名字”這兩個(gè)自然是不同的(對(duì)電腦而言),進(jìn)而輸出error。
解決辦法就是將find中的漢字“名字”轉(zhuǎn)為UTF8編碼即可,但是要想在控制臺(tái)中正確的輸出pchild->Value()中所包含的UTF8編碼的漢字,則又需要進(jìn)行轉(zhuǎn)換


還有一種方法,或者說是徹底的方法,就是直接將xml聲明中的編碼改為gb2312,這樣一來就輕松很多,基本上上面所說的問題都不會(huì)存在了。

以上就是我個(gè)人的所遇到的問題,以及解決方法。在其中如有不正確的說法,懇請(qǐng)指正

另:
1. Write中用到的轉(zhuǎn)換函數(shù)iconv是第三方庫,并非ms或標(biāo)準(zhǔn)庫自帶,有需要的朋友可以Google之。
2. 要是全世界人民都用同一種語言,那該多好呀,會(huì)省了很多事,至于又會(huì)帶來什么問題暫不考慮。
posted on 2010-04-08 15:07 zhaoyg 閱讀(4808) 評(píng)論(0)  編輯 收藏 引用 所屬分類: other
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久热精品在线视频| 欧美成人免费在线视频| 欧美激情二区三区| 欧美成人午夜影院| 欧美成人精品在线视频| 欧美第一黄网免费网站| 亚洲国产影院| 亚洲国产精品va在线观看黑人| 欧美成人精品| 99热这里只有成人精品国产| 亚洲视屏一区| 久久精品视频免费播放| 嫩模写真一区二区三区三州| 欧美日韩精品二区| 国产精品亚洲综合久久| 亚洲国内自拍| 亚洲欧美激情四射在线日| 亚洲欧美精品中文字幕在线| 久久久久成人精品| 欧美大片第1页| 中文av一区二区| 久久高清福利视频| 欧美精品在线一区二区| 国产精品午夜在线| 亚洲精品久久久久久一区二区| 亚洲嫩草精品久久| 久久综合九色综合欧美狠狠| 亚洲老板91色精品久久| 亚洲男人av电影| 亚洲欧美久久久| 另类av一区二区| 国产精品国产自产拍高清av| 一区二区在线不卡| 亚洲综合99| 亚洲国产91| 久久riav二区三区| 国产精品久久国产精品99gif | 欧美日韩1234| 韩国一区电影| 亚洲欧美日韩在线不卡| 欧美激情片在线观看| 欧美一级夜夜爽| 欧美日韩在线视频一区二区| 一区二区三区在线高清| 欧美有码在线观看视频| 中日韩男男gay无套| 欧美精品v日韩精品v国产精品| 红桃视频一区| 欧美一区二区三区免费视频| 一本久久综合亚洲鲁鲁五月天| 欧美a级理论片| 激情综合网激情| 欧美一区二区三区久久精品| 一卡二卡3卡四卡高清精品视频| 欧美成人高清视频| 亚洲欧洲精品成人久久奇米网| 久久精品国产清自在天天线| 亚洲永久在线| 国产精品综合视频| 欧美一区二区高清| 亚洲男女毛片无遮挡| 国产精品实拍| 亚洲欧美一区在线| 亚洲欧美日韩在线观看a三区| 国产精品乱人伦一区二区| 亚洲自拍偷拍一区| 亚洲欧美日韩一区二区在线 | 国产精品一区=区| 午夜一区二区三区不卡视频| 亚洲色诱最新| 国产精品天美传媒入口| 午夜精品美女久久久久av福利| 亚洲天堂成人在线视频| 国产喷白浆一区二区三区| 久久精品国产第一区二区三区| 午夜欧美理论片| 狠狠色丁香婷综合久久| 欧美国产亚洲视频| 欧美日韩成人激情| 欧美一区2区视频在线观看 | 欧美午夜www高清视频| 亚洲少妇中出一区| 美女性感视频久久久| 极品中文字幕一区| 亚洲丁香婷深爱综合| 蜜桃av综合| 亚洲专区一区| 久久久久久高潮国产精品视| 亚洲人成在线观看一区二区| 一本色道久久88综合日韩精品| 国产精品婷婷| 亚洲福利久久| 国产精品视频专区| 欧美国产精品一区| 国产精品久久久久久影视| 久久久久免费观看| 欧美日本一道本| 欧美一区午夜精品| 欧美成人国产va精品日本一级| 亚洲女人天堂成人av在线| 久久国产精品久久久久久| 日韩视频二区| 久久久久久久欧美精品| 亚洲午夜一区| 久久福利资源站| 亚洲欧美日韩精品在线| 久久影音先锋| 欧美一区午夜精品| 欧美日韩精品在线观看| 久久久久中文| 国产精品成人久久久久| 欧美国产综合视频| 国产日韩精品久久| aa级大片欧美三级| 亚洲精品女人| 久久噜噜噜精品国产亚洲综合| 亚洲一区中文| 欧美精品一区二区精品网 | 久久激情综合| 欧美日韩一区二区三区在线看| 蜜臀91精品一区二区三区| 国产精品视频大全| 一区二区三区久久网| 日韩视频中文| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久久成人| 国产日韩精品综合网站| 亚洲视频一区| 亚洲综合成人婷婷小说| 欧美三级乱码| 亚洲精选大片| 在线亚洲欧美专区二区| 欧美激情麻豆| 亚洲电影第三页| 亚洲国产一区在线观看| 另类激情亚洲| 亚洲国产精品久久久| 亚洲人久久久| 欧美精品日韩精品| 一区二区三区高清| 香蕉久久一区二区不卡无毒影院| 欧美色另类天堂2015| 亚洲四色影视在线观看| 欧美一区二区日韩| 在线看片成人| 欧美精品一线| 亚洲一区二区日本| 久久一二三国产| 女人色偷偷aa久久天堂| 国产精品大片wwwwww| 在线亚洲一区二区| 中文一区字幕| 国产伦精品一区二区三区视频孕妇 | 国产精品卡一卡二卡三| 亚洲欧美精品在线观看| 麻豆精品传媒视频| 日韩视频免费在线| 国产精品露脸自拍| 久久精品欧美日韩| 欧美成人四级电影| 中文久久精品| 国产在线一区二区三区四区| 乱人伦精品视频在线观看| 亚洲人久久久| 西瓜成人精品人成网站| 精品二区视频| 欧美日韩激情网| 欧美制服丝袜| 亚洲欧洲日韩在线| 午夜综合激情| 亚洲精品乱码久久久久久黑人 | 欧美一区三区三区高中清蜜桃| 免费人成精品欧美精品| 夜夜嗨av一区二区三区四季av| 国产精品视频999| 欧美成人午夜剧场免费观看| 亚洲欧美日韩爽爽影院| 亚洲国产精品女人久久久| 午夜久久福利| 最新国产精品拍自在线播放| 国产精品毛片a∨一区二区三区|国 | 黄网动漫久久久| 欧美日精品一区视频| 久久一综合视频| 亚洲一区二区三区视频播放| 欧美成人国产va精品日本一级| 亚洲一区二区三区777| 亚洲国产高清一区| 国产日本精品| 欧美日韩一级片在线观看| 久久久久综合网| 欧美亚洲在线播放| 亚洲五月婷婷| 亚洲欧洲日本国产| 久久综合中文色婷婷| 欧美一区精品| 午夜精品在线看| 亚洲天堂av电影| 亚洲美女av在线播放| 亚洲国产精品va在线看黑人动漫|