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

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

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

現在就來說說我遇到的問題,以及我的解決方法。

如有不對的地方,懇請指正,小弟在這先謝謝了。

對于如下代碼,
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("測試"));
????pele
->LinkEndChild(psubele);
????doc.LinkEndChild(pele);

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

生成的test.xml文件如果直接用IE查看,則會提示說遇見無效字符。之所以這樣是因為,當文件進行保存時,文件的實際編碼是ansi,而在ie進行解讀時會根據聲明中指定的編碼utf-8來進行解釋,對于英文字母來說utf-8和ansi是兼容的,但因為其中有漢字,所以用utf-8來解釋編碼為ansi的漢字就會出現亂碼的問題,從而使得ie提示說遇見無效字符。

而解決的方法是,將寫入的中文字符串轉為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?=?"測試";
????
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字符集轉換為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");
}
進行轉換之后,就可以在IE中顯示xml文件內容了。

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

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

如果用如下所示的方法來讀取節點“名字”,只會輸出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;
}
因為函數find中的"名字"并不是UTF8編碼,"名字"的實際編碼可能是ANSI編碼(我也不敢確定),所以xml文件中以UTF8進行編碼的“名字”和find函數中以非UTF8編碼的“名字”這兩個自然是不同的(對電腦而言),進而輸出error。
解決辦法就是將find中的漢字“名字”轉為UTF8編碼即可,但是要想在控制臺中正確的輸出pchild->Value()中所包含的UTF8編碼的漢字,則又需要進行轉換


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

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

另:
1. Write中用到的轉換函數iconv是第三方庫,并非ms或標準庫自帶,有需要的朋友可以Google之。
2. 要是全世界人民都用同一種語言,那該多好呀,會省了很多事,至于又會帶來什么問題暫不考慮。
posted on 2010-04-08 15:07 zhaoyg 閱讀(4808) 評論(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>
            日韩午夜电影在线观看| 国产精品国产精品国产专区不蜜| 毛片av中文字幕一区二区| 亚洲欧美一区二区视频| 欧美一级黄色网| 欧美中文字幕在线视频| 久久人人精品| 亚洲青色在线| 亚洲毛片播放| 欧美一区二区高清在线观看| 久久久亚洲精品一区二区三区| 久久久久久免费| 欧美伦理a级免费电影| 国产欧美另类| 99re热精品| 久久成人精品一区二区三区| 欧美a级理论片| 中日韩高清电影网| 久久久久久久久一区二区| 欧美日韩一区二区在线观看视频| 国产午夜精品视频免费不卡69堂| 亚洲国产乱码最新视频| 亚洲少妇自拍| 裸体丰满少妇做受久久99精品| 亚洲每日在线| 久久婷婷av| 国产精品美女999| 亚洲电影专区| 久久成人综合视频| 99国产一区| 免费美女久久99| 国产婷婷成人久久av免费高清| 亚洲精选久久| 久久亚洲精品欧美| 亚洲视频成人| 欧美久久成人| 亚洲国产成人精品女人久久久| 香蕉成人啪国产精品视频综合网| 91久久精品一区| 久久夜色精品国产亚洲aⅴ | 久久亚洲私人国产精品va| 亚洲欧洲日韩女同| 久久综合色综合88| 国产偷国产偷亚洲高清97cao| 中文国产成人精品久久一| 久久精品一级爱片| 一区二区三欧美| 欧美激情综合亚洲一二区| 国内精品久久久久久| 欧美一区二区三区日韩| 一本色道婷婷久久欧美| 欧美精品九九| 亚洲乱码国产乱码精品精98午夜| 欧美黄色片免费观看| 久久综合九色| 亚洲人午夜精品| 亚洲激精日韩激精欧美精品| 麻豆国产精品一区二区三区| 樱桃成人精品视频在线播放| 久久久欧美精品sm网站| 欧美一区二区三区四区在线 | 亚洲国产成人精品久久久国产成人一区 | 亚洲午夜免费福利视频| 欧美午夜三级| 亚洲视频欧美在线| 99精品国产热久久91蜜凸| 欧美不卡在线| 一区二区av| 亚洲视频在线看| 国产美女在线精品免费观看| 久久精品主播| 欧美国产精品中文字幕| 亚洲午夜精品网| 香蕉久久精品日日躁夜夜躁| 狠狠色狠狠色综合日日小说| 欧美成人精品一区二区| 欧美大片网址| 午夜精品一区二区三区在线| 欧美一区二区在线免费观看 | 国产精品av久久久久久麻豆网| 亚洲视频免费看| 欧美一二区视频| 91久久精品日日躁夜夜躁国产| 亚洲欧洲日产国产网站| 国产精品一区免费观看| 欧美丰满少妇xxxbbb| 欧美日韩国产成人在线91| 亚洲免费在线电影| 久久精品欧美日韩| 9久草视频在线视频精品| 亚洲欧美日韩精品久久久| 在线观看不卡av| 一区二区三区 在线观看视| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美福利电影在线观看| 欧美日本韩国一区二区三区| 亚洲一级电影| 欧美在线播放| 一本久道久久综合婷婷鲸鱼| 午夜在线视频一区二区区别| 亚洲黄色毛片| 亚洲影院在线| 亚洲精品视频中文字幕| 亚洲欧美成人一区二区在线电影| 亚洲国产欧美一区二区三区久久| 中文有码久久| 亚洲人久久久| 久久久一区二区三区| 亚洲欧美精品伊人久久| 欧美高清视频在线| 另类综合日韩欧美亚洲| 国产精品多人| 亚洲黄色小视频| 在线日韩视频| 欧美一级片在线播放| 亚洲视频在线观看免费| 欧美91大片| 欧美成人69av| 激情综合中文娱乐网| 亚洲一区在线观看视频 | 猛男gaygay欧美视频| 国产精品美女久久久久久2018| 欧美激情一区| 在线欧美亚洲| 久久成人国产| 久久国产精品久久久久久电车| 欧美日韩伊人| 亚洲精品一二三| av不卡在线| 欧美日韩国产系列| 日韩视频在线观看免费| 日韩亚洲视频| 欧美精品在线视频观看| 亚洲韩国青草视频| 亚洲乱码国产乱码精品精| 免费一级欧美片在线播放| 欧美成人午夜激情| 亚洲电影成人| 欧美 日韩 国产精品免费观看| 欧美成人精品h版在线观看| 亚洲国产女人aaa毛片在线| 玖玖国产精品视频| 亚洲国产精品久久91精品| 亚洲精品永久免费精品| 欧美精品一区二| 99精品国产在热久久| 亚洲永久免费精品| 国产精品久久久久久久久久三级 | 9色精品在线| 亚洲午夜视频在线观看| 国产精品九九久久久久久久| 亚洲午夜精品17c| 欧美在线首页| 伊人精品视频| 欧美精品久久一区| 一本色道久久综合亚洲精品小说| 亚洲国产经典视频| 国产精品高潮粉嫩av| 亚洲一区二区网站| 午夜精品电影| 国产自产女人91一区在线观看| 欧美制服第一页| 亚洲第一久久影院| 亚洲综合第一页| 国产亚洲综合性久久久影院| 美日韩精品免费| 在线亚洲国产精品网站| 久久免费视频网| 艳妇臀荡乳欲伦亚洲一区| 国产欧美日韩精品丝袜高跟鞋| 久久视频一区| 亚洲视频中文| 欧美激情亚洲自拍| 久久国产欧美日韩精品| 亚洲乱码国产乱码精品精天堂| 国产精品婷婷| 欧美激情视频在线播放| 午夜精品视频在线观看一区二区| 欧美1级日本1级| 亚洲免费人成在线视频观看| 在线观看精品视频| 国产精品私人影院| 欧美人成免费网站| 久久精品视频播放| 亚洲一区3d动漫同人无遮挡| 亚洲国产成人一区| 久久久91精品国产| 亚洲女优在线| 日韩午夜在线观看视频| 在线观看91精品国产麻豆| 国产乱码精品1区2区3区| 欧美精品一区二区三区在线播放| 欧美一区二区三区免费视频| 亚洲视频欧洲视频| 亚洲精品欧洲| 亚洲激情精品| 欧美高清在线视频| 男女激情视频一区| 久久久亚洲精品一区二区三区| 亚洲欧美国产制服动漫|