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

隨筆-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>
            亚洲国产精品福利| 久久国产精品高清| 欧美日韩成人激情| 欧美国产日韩精品| 欧美精品一二三| 欧美日韩18| 国产精品视频久久一区| 国产日韩欧美自拍| 在线观看欧美| 亚洲精选中文字幕| 亚洲欧洲精品天堂一级| 性做久久久久久久免费看| 亚洲一级二级| 久久99在线观看| 免费短视频成人日韩| 亚洲黄色大片| 亚洲免费在线观看视频| 久久久久国产一区二区| 欧美精品一区二区三| 国产伦精品一区| 亚洲国产视频直播| 亚洲女同同性videoxma| 欧美综合77777色婷婷| 亚洲国产91色在线| 校园春色综合网| 欧美日韩精品综合| 亚洲高清自拍| 久久久国产精彩视频美女艺术照福利| 亚洲福利国产| 欧美在线免费| 欧美日韩在线不卡一区| 在线观看一区二区视频| 欧美在线国产| 99热在线精品观看| 欧美国产欧美综合 | 校园激情久久| 欧美人与性禽动交情品| 在线成人国产| 久久精品99国产精品日本 | 久久午夜精品| 国产精品99久久久久久宅男| 老巨人导航500精品| 国产日韩欧美在线一区| 亚洲在线1234| 亚洲裸体视频| 欧美美女操人视频| 亚洲精品乱码久久久久久| 老司机精品视频一区二区三区| 亚洲午夜精品国产| 欧美性猛交99久久久久99按摩| 亚洲美女精品一区| 国产精品毛片va一区二区三区 | 欧美日韩一区三区四区| 亚洲激情另类| 欧美不卡视频一区发布| 欧美综合国产精品久久丁香| 国产精品一区二区久久久久| 亚洲欧美电影在线观看| 一本到高清视频免费精品| 欧美日韩免费区域视频在线观看| 亚洲精品国产视频| 一区二区av在线| 亚洲成人在线观看视频| 久久动漫亚洲| 午夜国产一区| 国产一区二区| 久久午夜视频| 麻豆精品视频在线观看视频| 亚洲第一在线视频| 亚洲国产色一区| 欧美日韩国产综合视频在线| 中文高清一区| 亚洲视频在线免费观看| 国产精品美女主播| 久久久久免费| 美女精品视频一区| 99精品视频免费全部在线| 亚洲最新色图| 国产一区二区三区自拍| 欧美高清免费| 国产精品国产a级| 久久男人资源视频| 久久亚洲影院| 亚洲一区二区欧美| 欧美在线观看www| 亚洲人成在线观看一区二区| 99精品黄色片免费大全| 国产一区999| 亚洲国产精品尤物yw在线观看| 欧美日韩另类国产亚洲欧美一级| 午夜视频一区二区| 久久免费视频网| 久久久青草婷婷精品综合日韩| 欧美 日韩 国产在线| 亚洲天堂偷拍| 欧美日韩午夜剧场| 亚洲国产日韩欧美综合久久 | 在线观看欧美| 欧美午夜宅男影院在线观看| 一本久道久久综合中文字幕 | 国产精品青草久久| 久久亚洲欧美| 最新69国产成人精品视频免费| 久久免费视频这里只有精品| 久久99在线观看| 日韩视频在线观看| 欧美一区二区视频在线| 久久一区二区视频| 亚洲国产精品久久久久秋霞不卡| 欧美午夜精品久久久久久人妖| 亚洲小说欧美另类婷婷| 欧美精品999| 亚洲一区二区三区777| 亚洲永久精品国产| 久久久噜噜噜久久人人看| 性欧美大战久久久久久久久| 久久免费高清| 久久精品亚洲国产奇米99| 欧美人与禽性xxxxx杂性| 欧美成人精品h版在线观看| 国产精品福利av| 亚洲日韩欧美视频一区| 亚洲成色精品| 久久大逼视频| 久久久人成影片一区二区三区| 国产精品久久久久毛片软件 | 欧美11—12娇小xxxx| 国产精品高清一区二区三区| 国产视频在线观看一区二区| 亚洲精品自在久久| 亚洲精品免费观看| 免费在线欧美黄色| 牛牛精品成人免费视频| 韩日午夜在线资源一区二区| 午夜天堂精品久久久久| 性欧美xxxx视频在线观看| 国产精品一区久久| 亚洲尤物视频网| 欧美在线观看一区| 国产自产精品| 美女网站久久| 亚洲人成网站999久久久综合| 亚洲看片免费| 欧美日韩一级黄| 亚洲无玛一区| 欧美专区18| 狠狠干综合网| 久久亚洲精品网站| 亚洲国产精品一区| 亚洲免费中文| 国产欧美va欧美va香蕉在| 午夜日韩在线观看| 久久久噜噜噜久久中文字幕色伊伊| 狠狠色噜噜狠狠狠狠色吗综合| 久久天天躁夜夜躁狠狠躁2022 | 午夜国产精品影院在线观看 | 国产亚洲视频在线观看| 久久精品国产免费| 欧美寡妇偷汉性猛交| 亚洲精品一区二区网址| 欧美日韩国产免费| 亚洲欧美高清| 欧美福利专区| 亚洲性图久久| 国产视频欧美视频| 麻豆精品在线观看| 正在播放亚洲一区| 极品中文字幕一区| 狠狠色丁香久久婷婷综合丁香| 国精品一区二区三区| 黄网站免费久久| 亚洲一区二区三区免费视频| 亚洲国产福利在线| 欧美一区二粉嫩精品国产一线天| 欧美大片在线观看一区二区| 国产一区999| 欧美在线不卡| 午夜精品福利一区二区蜜股av| 亚洲风情在线资源站| 亚洲欧洲日产国产综合网| 亚洲午夜精品| 亚洲美女视频在线观看| 久久精品国产一区二区电影| 91久久久久久国产精品| 国产精品亚洲视频| 欧美成人一区二免费视频软件| 亚洲综合色激情五月| 亚洲国产一区二区在线| 久久视频一区| 亚洲欧美精品中文字幕在线| 亚洲精品女av网站| 黄色小说综合网站| 国产精品人成在线观看免费| 欧美激情综合五月色丁香| 久久精品人人做人人综合 | 这里只有精品电影| 在线观看国产欧美| 国产一二三精品| 国产精品视频99| 欧美日韩中文字幕在线|