让ogre程序支持中文 & 让ogitor支持中文

1,让ogre程序支持中文

setlocale(LC_ALL,"Chinese-simplified");

将其放置在main函数开始,可以让ogre支持中文资源以及中文路径。

 

2,让ogitor支持中文

也是在main函数开始处贴如下代码:

setlocale( LC_CTYPE, "");
QTextCodec* codec =QTextCodec::codecForName("GB2312");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);

贴上如上代码后,编辑中文名的模型确实没有问题,可如果保存文件(.ogscene)后再打开该文件,就会报I/O错误。这是由于ogitor用tinnyxml作为文件解析器,在保存文件的时候没有设置格式,只是简单的添加了xml头:

 outfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"   @see OgitorsSceneSerializer.cpp

所以默认保存的文本编码格式为ANSI. 然而读取的时候确实按照UTF-8来读取的,我们已经设置了qt的编码格式为GB2312(为ANSI的代码页936),所以只需要在ogitor保存的xml头的时候修改为:

outfile << "<?xml version=\"1.0\" encoding=\"GB2312\"?>\n"; // modified by lovestartian 2012.01.08

OK,现在可以完全支持中文的导入和导出了,不过还有个,导出.scene场景脚本文件的时候也是和保存.ogscene一样的问题,修改如下:

pXMLDoc->InsertEndChild(TiXmlDeclaration( "1.0", "GB2312", "")); // modified by lovestartian 2011.01.08
 //pXMLDoc->InsertEndChild(TiXmlDeclaration( "1.0", "UTF-8", "")); // old @see DotSceneSerializerExport.cpp

在自己的程序中解析.scene的脚本的时候,只需要按照“让ogre支持中文”来做亦可。

你可能感兴趣的:(xml,脚本,qt,encoding,Codec)