最近在做osgEarth加载中文名字和路径的问题,参考了很多前辈的方法,终于搞定了 ,在这里自己做一个总结
1.首先要明白字节编码基本东西
2.明白osg加载数据的插件方式
具体可以参考:http://blog.csdn.net/cccstudyer/article/details/21969261
我也是参考这篇博客知道osg里面已经自带了字节转换的功能在osgDB/convertUTF,里面有把当前编码转化为UTF8和UTF16的函数。
首先按照上文博客所说,修改osgDB 的读入流文件 fstream.cpp
#ifdef OSG_USE_UTF8_FILENAME
#define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(s).c_str()
#else
#define OSGDB_CONVERT_UTF8_FILENAME(s) convertUTF8toUTF16(convertStringFromCurrentCodePageToUTF8(s)).c_str()
#endif
修改这个是不是就可以在osgEarth中可以加载含有中文路径的.earth文件呢,答案是的。但是还是不能加载TMS路径的中文服务。
你还需要在TMS.CPP中找到read入口,把osgDB::Options中获取url进行转码,对其转码有两种方式:
1.直接在url入口处进行转码,在tms的插件中有个TMSOptions 把原来return _url 进行转码到UTF8 修