解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法

在此感谢那些在路上那个帮助过别人的朋友,谢谢。

方法一:

通过自己写函数转换类型。

下面这三个函数先复制过去吧。

void unicodeToUTF8(const std::wstring &src, std::string& result)

{

int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 );

result.resize(n);

::WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, (char*)result.c_str(), result.length(), 0, 0 );

}

void gb2312ToUnicode(const std::string& src, std::wstring& result)

{

int n = MultiByteToWideChar( CP_ACP, 0, src.c_str(), -1, NULL, 0 );

result.resize(n);

::MultiByteToWideChar( CP_ACP, 0, src.c_str(), -1, (LPWSTR)result.c_str(), result.length());

}

void gb2312ToUtf8(const std::string& src, std::string& result)

{

std::wstring strWideChar;

gb2312ToUnicode(src, strWideChar);

unicodeToUTF8(strWideChar, result);

}

接下来把需要显示的中文进行如下转换便可以使用了。

std::string _strName;

_strName = "你好";

std::string _strWideName;

gb2312ToUtf8(_strName,_strWideName)

-------------等等还是乱码。好吧的确有可能还是乱码,这里需要设置字体样式:

Style pin;

pin.getOrCreate<IconSymbol>()->url()->setLiteral("D:/osgearth/OSGOK/data/placemark32.png");//指定标注图片路径

pin.getOrCreate<osgEarth::Symbology::TextSymbol>()->font()="C:/Windows/Fonts/simhei.ttf";//指定中文字体路径

pin.getOrCreate<osgEarth::Symbology::TextSymbol>()->encoding() = osgEarth::Symbology::TextSymbol::ENCODING_UTF8;

pin.getOrCreate<TextSymbol>()->alignment() = TextSymbol::ALIGN_CENTER_CENTER;

pin.getOrCreate<TextSymbol>()->fill()->color() = Color::Red;

root->addChild( new PlaceNode(mapNode, GeoPoint(mapNode->getMapSRS(), 117.5, 39.38), _strWideName , pin));

把这个字体样式加上就可以成功显示中文了,好了吧。

方法二:

这是一种很酷炫的方法(其实跟方法二差不多啦)。

方法就是利用Qt的函数来处理中文,代码很简单,如下:

QString name="你好";

std::string _strWideName = std::string(name.toUtf8());

--------------等等别忘记额,这种方法任然需要设置字体样式(跟方法二相同)。

方法三:

修改源码重新编译。好吧,这种方式一劳永逸(网上有很多重新编译的需要修改源码的案例),这里我就不多做累述。

无图无真相:

时间: 2024-11-08 17:19:16

解决osgEarth中文显示乱码的几种方法的相关文章

MySQL 插入中文不乱码的5种方法

MySQL 插入中文不乱码的5种方法: 方法一: 登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 mysql> set names latin1; mysql> source  test.sql; 方法二: 在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件    [[email protected] ~]# cat test.sql  set names latin1; insert ***************

linux系统如何更改字符集的支持,解决Linux中文显示乱码使centos显示中文

linux系统如何更改字符集的支持 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的.咗嚛本经验以centos为例,操作Linux怎么查看语言,设置修改语言 主要是更改/etc/locale.conf文件.centos7之前的版本的配置文件为:/etc/sysconfig/i18n 查看当前系统语言 登陆linux系统打开操作终端之后,输入 

解决SecureCRT中文显示乱码

操作步骤 下面两步: 远程linux机器.改动环境变量LANG.比如在~/.bash_profile里面加入? export LANG=zh_CN.UTF8 又一次登录之后生效. 如今查看一下当前设置: [email protected]~> locale LANG=zh_CN.UTF8 LC_CTYPE="zh_CN.UTF8" LC_NUMERIC="zh_CN.UTF8" LC_TIME="zh_CN.UTF8" LC_COLLATE

37、解决 HTMLTestRunner 中文显示乱码的问题

1.在自己的测试脚本中加入下面的代码并保存: # -.- coding:utf-8 -.- import sys reload(sys) sys.setdefaultencoding('utf-8') 2.打开HTMLTestRunner.py,修改其中的第777行和第783行,将其中的编码"latin-1"修改为"utf-8"后保存,具体如下所示: if isinstance(o,str): # TODO: some problem with 'string_es

解决psql客户端汉字乱码的一种方法

今天摆弄psql,发现汉字乱码,网上答案不够简介明了,但找到了一种比较有效的方法: 输入命令 SET client_encoding=GBK; 此命令将客户端编码方式变为GBK,即可实现汉字正常显示.

putty中文显示乱码解决方法

putty工具是开源免费的远程ssh工具,界面整洁,小巧好用,配合同样小巧整洁且免费的WinSCP的ftp功能,绝对是linux后端开发的利器 说下解决putty中文显示乱码的问题 1.更改linux系统的语言环境 vim ~/.bash_profile 在最后添加一行   LANG="zh_CN.UTF-8" :wq 退出保存 最后运行 source ~/.bash_profile 2.修改putty显示 首先ssh连接到你修改过~/.bash_profile 的服务器,登陆后,右键

ubuntu 中文显示乱码问题 (转)

添加中文字符编码: $sudo vim /var/lib/locales/supported.d/local #添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030 使其生效: $sudo dpkg-reconfigure locales vim: 打开vim的配置文件,位置在/etc/vim/vimrc 在其中加入 set fileencodings=utf-8,gb2312,gbk,gb18030 set ter

【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用iconv库来解决.3.使用解析xml或者json文件来解决.这里推荐使用第三种方法来解决,因为比较简单方便,还能支持I18N国际化.下面我们来一一详细了解一下每种解决方案的具体实现: 一.通过转换为UTF-8编码的方式显示出来,建立一个方法用于转换中文到对应的UTF-8编码,具体代码如下: 1 ch

ubuntu 中用vim打开txt等文件中文显示乱码的解决方法 &nbsp;

今晚用ubuntu 12.04 的vim编辑网页代码时,发现上面的中文显示乱码.这个html文件是我之前用gedit编辑的,在gedit里面显示正常,可是在vim下显示就是乱码了. 怎么解决ubuntu中vim显示中文乱码的问题呢? 首先,添加中文字符编码: sudo gedit /var/lib/locales/supported.d/local 在打开的文件中添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030