cocos2d-x lua BMFont中文问题解决
2012-03-03 21:19
274 查看
在研究用lua使用cocos2d-x 显示中文的问题,好像对ttf支持的不是很好,只能用CCLabelBMFont了,看了下BMFont工具生成的fnt文件,发现英文字符的char id 和asic2一样,
但是中文id 比如“一”这个汉字的char id 为 19968,google一下发现这是unicode编码。
CCLabelBMFont代码中生成字体纹理函数为void CCLabelBMFont::createFontChars()
问题的关键在这里啊,它使用的是string,也就是不支持宽字符,那当然找不到汉字对应的id了(还有个变量要改一下kCCBMFontMaxChars 默认设得很小,看情况设得大点,在对应头文件中)。
这样看来只要把string转换成wstring就能找到char id了,
转换代码:
重新编译后接着运行代码,居然还是不能显示中文,继续查,发现传进来的theString一个中文占3个字节(这是什么编码?变长unicode?)
然后我把lua的编码从uft-8换到ANSI编码,问题就解决了,顺利找到中文字符的char id,并且显示出来。
但是中文id 比如“一”这个汉字的char id 为 19968,google一下发现这是unicode编码。
CCLabelBMFont代码中生成字体纹理函数为void CCLabelBMFont::createFontChars()
问题的关键在这里啊,它使用的是string,也就是不支持宽字符,那当然找不到汉字对应的id了(还有个变量要改一下kCCBMFontMaxChars 默认设得很小,看情况设得大点,在对应头文件中)。
这样看来只要把string转换成wstring就能找到char id了,
转换代码:
setlocale(LC_ALL,"CHS"); wchar_t *wstrBuf = new wchar_t[strlen(m_sString.c_str())]; swprintf(wstrBuf,L"%S",m_sString.c_str()); wstring m_wsString(wstrBuf); 最后:delete wstrBuf;
重新编译后接着运行代码,居然还是不能显示中文,继续查,发现传进来的theString一个中文占3个字节(这是什么编码?变长unicode?)
然后我把lua的编码从uft-8换到ANSI编码,问题就解决了,顺利找到中文字符的char id,并且显示出来。
相关文章推荐
- 用加载字符串配置文件的方式解决cocos2D-x项目中文乱码问题
- cocos2d_x使用iconv库转码解决中文显示问题
- Cocos2d-x中文支持问题的解决办法
- Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法
- cocos2d-x解决中文乱码问题
- cocos2d-x解决中文乱码问题的几种办法
- Cocos2d-x 3.1.1 学习日志4--cocos2d-x解决中文乱码问题的几种办法
- cocos2d-x中中文显示问题解决方法一
- cocos2d-lua android解决启动时因为资源加载而黑屏的问题
- 解决cocos2d-x 2.1.3版本之后 lua无法调试的问题
- [Cocos2D-X]使用iconv解决VS上中文显示乱码的问题+android导入第三方库iconv
- 解决cocos2d-x 中文乱码的问题
- cocos2d-x中中文显示问题解决方法二
- cocos2d-x解决中文乱码问题的几种办法
- cocos2d-x解决中文乱码问题(详细)!(跨平台)
- cocos2d 中文显示问题解决
- cocos2d-x 3.2 在window平台vs2012下解决中文乱码问题
- 关于Cocos2d-x中文乱码问题的解决
- cocos2d-x中文显示问题解决方法(使用cocos2dx中自带的iconv实现)
- cocos2d-x 3.0 使用Sax解析xml文档(解决中文显示问题)