zoukankan      html  css  js  c++  java
  • 什么,不是吧?又来,QT,Ogitor中文解决方法。。。

    Ogitor的思路可谓是完美主义,

    插件化,boost,QT,Ogre,

    PG,SkyX,HydraX,Caelum。。。

    强大的扩展,易改的架构,

    可是,可是,无数次纠结之后我要感叹,

    实在是太欺负人了,

    中文,老祖宗给我们留下这么多些字,活活要被只有26个字母民族的发明给烦恼死。。。

    唉,不纠结了,

    但真的,统一编码是件很重要的事情,建议C++委员会以后用Unicode32 一捅天下,

    相关utf-8之类的压缩减容放在内核中进行,省的那些老担心内存的爷爷程序员煞费苦心的为每一套程序来一个String体系。。。

    首先要说,QT,Ogre的String都是没问题的,

    而且它们都是很优秀的模块,

    可是一山不容二虎,俩热血青年放在一起,扔到了一个陌生环境(中文),

    能不打架么?

    而且QT我根本不熟,硬着头皮赶鸭子上架的,

    为此,我气得调试到半夜一点,我拍过键盘,

    我试过整体换string为wstring,String为UTFString(在Ogre或CeGUI下有过此尝试的朋友握个爪,一起哭一下),

    或者,一个一个MBCS换WCHAR

    经历过眼见把bug压到一个,刚靠上椅子吐气,忽然IDE暴走跳出几百个错误的悲剧。。。

    经多时尝试,十余次的重编后,一向优秀的vs也挂了数次,

    (PS:好吧,我承认是我菜,我是当祥林嫂来吐槽的,可诸位可以想想,Ogitor编译完成大概整个Dev包有1.6G)

    终于发现其中的几大问题,

    静下心来,其实也就是

    1,IO中文目录文件读取错误,

    2,UString.toStdString中文软码错误,

    3,Ogre::UTFString与Ogre::String的转换错误

    。。。。

    归类好了,问题也就迎刃而解了,

    首先,UString可以toLoacl8Bit可以做出正确转换,

    其次,String向UTFString转换时可以MultiByteToWideChar(CP_ACP, NULL, str.c_str(), str.size(), NULL, 0);

    最终,除去小问题,最终的解决方法,编码器

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

    还没具体试过,估计有上面几行问题就基本上可以搞定了。

    当然,话说回来,bug也是个好东西,

    最快地带你进入了解一款软件。。。

    这不,Ogitor又报错了,好吧,上路!

  • 相关阅读:
    @pytest.mark.parametrize使用笔录
    Python常用模块/函数
    Python代码驱动facebook-Wda
    pytest简述--pytest.ini、allure、logging、assert的使用
    终端命令启动webDriverAgent
    Wda自动化环境搭建[IOS]
    windows10常用终端命令+adb shell
    Python-unittest框架+HtmlTestRunner
    appium+python Android UI自动化环境搭建(windows10)
    调用百度AI实现人脸检索
  • 原文地址:https://www.cnblogs.com/Zephyroal/p/2017521.html
Copyright © 2011-2022 走看看