首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

c++builder用native XML编写XML文件 为什么UTF8无法显示汉字,而GB2312上就可以显示?如何在UTF-8上显示汉字,如何设置?求解惑

2012-12-14 
c++builder用native XML编写XML文件 为什么UTF8无法显示汉字,而GB2312下就可以显示?怎么在UTF-8下显示汉字

c++builder用native XML编写XML文件 为什么UTF8无法显示汉字,而GB2312下就可以显示?怎么在UTF-8下显示汉字,怎么设置?求解惑.
本帖最后由 linxinghen123 于 2012-11-22 22:27:55 编辑  查了很多资料,但都说的不是很清楚,刚接触C++BUILDER 希望高手指点~谢谢!
 简单例子:
 TNativeXml *ADoc;
   TXmlNode *node;
   ADoc = new TNativeXml("Root");
   try
   {
      node = ADoc->Root->NodeNew("Customer");
      node->WriteAttributeInteger("ID", 123456);
      node->WriteString("Name", 乔丹)
      ADoc->XmlFormat = xfReadable;
      ADoc->VersionString="1.0";
      ADoc->ExternalEncoding=seUTF8;
      ADoc->EncodingString="UTF-8";
      ADoc->SaveToFile("c:\\test.xml");
   }
   __finally
   {
      ADoc->Free();
   }
[最优解释]
还有这句话ADoc->Utf8Encoded = true;

void __fastcall TForm1::Button5Click(TObject *Sender)
{
   TNativeXml *ADoc;
   TXmlNode *node;
   ADoc = new TNativeXml("Root");
   try
   {        
      ADoc->XmlFormat = xfReadable;
      ADoc->Utf8Encoded = true;
      ADoc->VersionString="1.0";
      ADoc->ExternalEncoding=seUTF8;
      ADoc->EncodingString="utf-8";
            
      node = ADoc->Root->NodeNew("Customer");
      node->WriteAttributeInteger("ID", 123456);
      node->WriteWidestring("Name", WideString("乔丹")); 

      ADoc->SaveToFile("c:\\test.xml");
   }
   __finally
   {
      ADoc->Free();
   }         
}

[其他解释]
前面加个L试试,比如
node->WriteString(L"Name",L"乔丹");
[其他解释]
还是不行,中文就没有显示...
[其他解释]
生成的XML文件正确吗?在什么软件中显示不出来?
[其他解释]
调用WriteWidestring方法。
node->WriteWidestring("Name1", WideString("张三李四"));
[其他解释]
解决了  多谢ksrsoft! 结贴~

热点排行