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

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

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

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

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

對于如下代碼,
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查看,則會提示說遇見無效字符。之所以這樣是因為,當(dāng)文件進(jìn)行保存時,文件的實際編碼是ansi,而在ie進(jìn)行解讀時會根據(jù)聲明中指定的編碼utf-8來進(jìn)行解釋,對于英文字母來說utf-8和ansi是兼容的,但因為其中有漢字,所以用utf-8來解釋編碼為ansi的漢字就會出現(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?=?"測試";
????
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文件顯示在瀏覽器中,下面的兩個問題就不再那么重要了。

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

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


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

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

另:
1. Write中用到的轉(zhuǎn)換函數(shù)iconv是第三方庫,并非ms或標(biāo)準(zhǔn)庫自帶,有需要的朋友可以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>
            欧美三级小说| 亚洲欧美国产精品桃花| 亚洲一区在线直播| 亚洲一线二线三线久久久| 亚洲一区二区三区四区中文| 美女爽到呻吟久久久久| 欧美日韩精品三区| 欧美三级电影精品| 国产在线播放一区二区三区| 亚洲欧洲精品一区二区三区波多野1战4 | 噜噜噜91成人网| 欧美高清一区| 国产精品久久久久久久免费软件| 国产日韩欧美高清免费| 最近看过的日韩成人| 亚洲综合电影一区二区三区| 美女黄毛**国产精品啪啪| 亚洲肉体裸体xxxx137| 亚洲一级黄色片| 狂野欧美一区| 国产精品入口麻豆原神| 亚洲精品美女久久久久| 欧美在线免费播放| 亚洲欧洲日本一区二区三区| 午夜精彩国产免费不卡不顿大片| 久久亚洲综合| 国产精品久久久久久久浪潮网站| 在线免费观看一区二区三区| 亚洲午夜一区| 亚洲国产精品免费| 久久激情视频久久| 欧美午夜精品理论片a级按摩| 精品成人一区| 欧美亚洲在线播放| 日韩午夜精品| 欧美精品www| 亚洲日韩欧美视频| 久久综合电影一区| 午夜精品久久久久久久久久久久久| 欧美岛国在线观看| 亚洲电影观看| 美国十次了思思久久精品导航| 中文av一区特黄| 欧美福利在线| 亚洲第一精品影视| 久久婷婷激情| 香蕉免费一区二区三区在线观看 | 国产综合色精品一区二区三区| 99精品国产在热久久下载| 欧美777四色影视在线| 欧美一区二区视频在线观看| 欧美性久久久| 亚洲性夜色噜噜噜7777| 日韩视频―中文字幕| 欧美区日韩区| 一区二区三区中文在线观看| 亚洲激情小视频| 久久嫩草精品久久久久| 国产一区二区三区在线观看视频| 亚洲欧美综合另类中字| 一区二区精品在线| 欧美日韩亚洲一区在线观看| 一区二区三区 在线观看视频| 亚洲高清视频一区| 欧美电影免费观看高清| 日韩系列欧美系列| 99这里只有精品| 国产精品高潮久久| 欧美一区二区免费| 欧美一区二区三区日韩| 国语精品一区| 欧美国产第一页| 欧美日韩国产免费| 亚洲综合国产激情另类一区| 午夜精品久久久久久久白皮肤| 国产在线麻豆精品观看| 欧美成人精品影院| 欧美日韩国产探花| 欧美专区在线观看| 玖玖国产精品视频| 在线亚洲自拍| 久久精品视频va| 99国产精品视频免费观看| 一区二区av在线| 国内精品亚洲| 日韩一区二区精品视频| 国产一区欧美日韩| 亚洲精品网址在线观看| 国产手机视频一区二区| 欧美国产日韩二区| 欧美日韩一卡| 久久久久久97三级| 欧美成人精品在线播放| 亚洲影院一区| 久久尤物视频| 欧美一区二区三区四区夜夜大片| 久久一区中文字幕| 性欧美videos另类喷潮| 欧美另类人妖| 午夜国产一区| 欧美在线观看视频一区二区三区 | 亚洲一区在线播放| 久久精品国产亚洲精品| 亚洲午夜久久久| 美日韩精品免费观看视频| 欧美在线视频a| 欧美日韩三级| 老鸭窝亚洲一区二区三区| 欧美日韩一区二区三区高清| 美国成人直播| 国产精品日韩久久久久| 亚洲国产精品电影在线观看| 国自产拍偷拍福利精品免费一| 日韩视频免费观看高清在线视频| 在线观看精品一区| 亚洲欧美视频在线| 亚洲午夜精品福利| 日韩视频免费在线观看| 一本到高清视频免费精品| 一本色道久久综合亚洲二区三区| 在线电影院国产精品| 亚洲专区一二三| 亚洲视频视频在线| 欧美伦理视频网站| 欧美激情一区二区三区蜜桃视频 | 亚洲国产精品va在线观看黑人| 国产日韩精品一区二区浪潮av| 日韩视频免费观看| 日韩午夜在线播放| 欧美成人午夜激情在线| 欧美风情在线观看| 亚洲大胆av| 免费一级欧美在线大片| 亚洲高清免费| 正在播放欧美视频| 欧美色道久久88综合亚洲精品| 亚洲最新合集| 亚洲欧美国产高清| 国产欧美va欧美不卡在线| 亚洲欧美日韩综合一区| 久久精品人人爽| 亚洲成人资源网| 欧美 日韩 国产精品免费观看| 欧美成人免费在线视频| 91久久嫩草影院一区二区| 欧美精品一区二区高清在线观看| 亚洲丰满少妇videoshd| av成人手机在线| 国产精品久久久久久久app| 亚洲自拍另类| 葵司免费一区二区三区四区五区| 一区二区在线观看av| 欧美激情1区2区| 亚洲视频在线观看网站| 久久精品欧美日韩| 亚洲精品一区二区三区99| 欧美日韩免费视频| 欧美高清免费| 国内精品久久久久影院优| 亚洲男人的天堂在线aⅴ视频| 久久国内精品自在自线400部| 狠狠色丁香婷综合久久| 欧美成人免费网站| 中国成人亚色综合网站| 久久久久久69| 这里只有精品视频在线| 国产一区二区日韩精品| 欧美成人一品| 亚洲在线播放| 欧美激情一区二区在线| 香蕉av777xxx色综合一区| 亚洲成人中文| 国产精品国产三级国产| 久久人人爽人人爽爽久久| av成人免费观看| 免费日韩视频| 亚洲欧美日韩在线一区| 怡红院精品视频| 国产精品久久国产三级国电话系列 | 亚洲网站在线看| 性18欧美另类| 亚洲视频在线观看| 国产主播在线一区| 欧美日韩成人一区| 久久久国产成人精品| 一区二区免费在线观看| 欧美高清视频在线观看| 欧美中文字幕在线| 亚洲视频中文字幕| 亚洲国产成人久久综合| 国产一区二区看久久| 欧美色道久久88综合亚洲精品| 巨乳诱惑日韩免费av| 亚洲欧美国产精品桃花| 99pao成人国产永久免费视频| 欧美freesex8一10精品| 久久久99爱| 久久高清国产| 香港久久久电影| 午夜精品久久久久久久白皮肤|