使用cocos3.17.2引擎,win端使用VS2019调试,安卓端使用cocos compile -p android编译
在安卓端运行时,如果返回值为含有中文的字符串则无法正常使用。如:
a是一个label
a->setString(x->b());
如果b返回的字符串不包括中文字符,则正常运行;如果b返回的字符串包括中文,a的内容并不会发生任何改变。而使用vs调试时则同样能正常运行。
e是一个string类型的变量,内容含有中文,使用c_str()返回字符串类型
同样,char* c=e.c_str();,在代码中使用c则会导致游戏崩溃。
补充一下,只有在含中文字符串作为返回值时会出现这个问题,比如a->setString(“我就是中文欢迎来打我啊”);在安卓是正常工作的。
————————————————————————————
进展:该问题只出现在使用另外一个类的方法返回时出现。
比如说,我另外写了一个类,f是一个该类创建的对象,b()是f的一个返回含有中文字符串的方法。
a->setString(f.b());出现问题
而如果我在Scene里面定义一个Scene::fuc1(),在cpp文件里定义一个fuc2(),都返回中文,那么在安卓上也能正常工作。
之前并没有出现这个问题,这两天才出现的,是否可能是我无意间改动了什么设置?
如有大神能解答疑惑,感激不尽!
返回string不要返回char*
1赞
谢谢大佬,但经测试仍无法解决问题
问题解决了。萌新又犯了个低级错误(悲)
是因为我在其他文件中写的函数,结果那个文件的编码没有保存成UTF8导致的
把包含中文字符串的文件编码全部修改为UTF8即解决问题。
真是抱歉浪费了大佬们的时间,我还只是一个新入坑的萌新,我会努力的!
1赞
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。