osggis的point label中文支持问题
osggis中可以把point的一个属性处理成label,但如果数据内容是中文,则显示出来的是乱码,请问这个问题谁解决过? 你更改一下字符编码应该就可以了~~~· 我在类的构造函数里增加:setlocale( LC_ALL, "chs" ),好像不行;是应该在哪里增加这个语句?每个class都需要加么?
谢谢 最好能够设置全局性最好了,,,不知道你设置宽字符集了没~~~可能你的位置不对吧~~~~ 能说得具体细么?比如我要在osgviewer中显示中文text,则只需要使osgtext的库支持中文就可以了么?在程序的那个地方设置setlocal? 是的,,,估计是你是否设置支持中文的缘故吧~中文的支持需要把字符转换为宽字符才可以的~~其他的一般都没有什么问题的~~~ 本帖最后由 feitaoy 于 2009-8-10 15:00 编辑
问题解决了,具体如下:
1。ive文件本身的text内容是中文的没问题,问题是出在加载ive时显示乱码,所以需要修改ive插件使其支持中文
2。ive插件的text.cpp中,增加中文支持:
#include <string>
#include <comutil.h>
using namespace std;
#pragma comment(lib, "comsuppw.lib")
string ws2s(const wstring& ws);
wstring s2ws(const string& s);
string ws2s(const wstring& ws)
{
_bstr_t t = ws.c_str();
char* pchar = (char*)t;
string result = pchar;
return result;
}
wstring s2ws(const string& s)
{
_bstr_t t = s.c_str();
wchar_t* pwchar = (wchar_t*)t;
wstring result = pwchar;
return result;
}
在Text::read()中增加代码
std::wstring str;
str=s2ws(in->readString());
setlocale(LC_ALL,"chs");
setText(str.c_str());
哈哈,,你可以向官方提交相关的更改代码~~~~ 相当的有用!谢谢! 不知道楼主用的那个版本的osg,至少2.8版是已经支持UNICODE文字的 在osggis的BuildLabelFilter中有一处setText语句,只需要将其参数改为宽字符就可以了。 to changwork :osggis生产的数据中并不是乱码,所以应该不是osggis的问题,我认为还是解析显示的问题;
to sohoman :我用的是2.9.5,用osgviewer和osggis_viewer浏览都是乱码,请教您的使用经验 回复 1# feitaoy
请问楼主是不是 使用的osggis_makelayer 将带有文字信息的矢量文件(如.shp)处理成的ive呢??
现在我想要添加文字注记 希望得到楼主的帮助 谢谢
页:
[1]