查看: 3484|回复: 12

osggis的point label中文支持问题

[复制链接]

该用户从未签到

发表于 2009-8-5 14:07:31 | 显示全部楼层 |阅读模式
osggis中可以把point的一个属性处理成label,但如果数据内容是中文,则显示出来的是乱码,请问这个问题谁解决过?

该用户从未签到

发表于 2009-8-6 13:24:22 | 显示全部楼层
你更改一下字符编码应该就可以了~~~·

该用户从未签到

 楼主| 发表于 2009-8-6 15:19:49 | 显示全部楼层
我在类的构造函数里增加:setlocale( LC_ALL, "chs" ),好像不行;

是应该在哪里增加这个语句?每个class都需要加么?

谢谢

该用户从未签到

发表于 2009-8-7 06:11:47 | 显示全部楼层
最好能够设置全局性最好了,,,不知道你设置宽字符集了没~~~可能你的位置不对吧~~~~

该用户从未签到

 楼主| 发表于 2009-8-7 11:09:45 | 显示全部楼层
能说得具体细么?比如我要在osgviewer中显示中文text,则只需要使osgtext的库支持中文就可以了么?在程序的那个地方设置setlocal?

该用户从未签到

发表于 2009-8-8 00:01:20 | 显示全部楼层
是的,,,估计是你是否设置支持中文的缘故吧~中文的支持需要把字符转换为宽字符才可以的~~其他的一般都没有什么问题的~~~

该用户从未签到

 楼主| 发表于 2009-8-10 14:59:22 | 显示全部楼层
本帖最后由 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());

aaa.JPG

该用户从未签到

发表于 2009-8-10 18:37:48 | 显示全部楼层
哈哈,,你可以向官方提交相关的更改代码~~~~

该用户从未签到

发表于 2009-8-25 17:21:34 | 显示全部楼层
相当的有用!谢谢!

该用户从未签到

发表于 2009-8-28 13:43:36 | 显示全部楼层
不知道楼主用的那个版本的osg,至少2.8版是已经支持UNICODE文字的

该用户从未签到

发表于 2009-9-3 00:05:01 | 显示全部楼层
在osggis的BuildLabelFilter中有一处setText语句,只需要将其参数改为宽字符就可以了。

该用户从未签到

 楼主| 发表于 2009-9-24 10:03:47 | 显示全部楼层
to changwork :osggis生产的数据中并不是乱码,所以应该不是osggis的问题,我认为还是解析显示的问题;

to sohoman :我用的是2.9.5,用osgviewer和osggis_viewer浏览都是乱码,请教您的使用经验

该用户从未签到

发表于 2011-6-30 14:48:10 | 显示全部楼层
回复 1# feitaoy


    请问楼主是不是 使用的osggis_makelayer 将带有文字信息的矢量文件(如.shp)处理成的ive呢??
现在我想要添加文字注记 希望得到楼主的帮助 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表