Cocos2dxJavascriptJavaBridge.evalString 中文乱码问题

代码如下
String javaScript = “cc.log(‘红红罗拉’)”

Cocos2dxJavascriptJavaBridge.evalString(javaScript);

到了js这边就是乱码了,在ScriptingCore里面的CCLOG出来的是正常中文,但是执行了JS_EvaluateScript之后输出的就是乱码了。

bool ScriptingCore::evalString(const char *string, jsval outVal, const char filename, JSContext cx, JSObject global)
{
if (cx == NULL)
cx = _cx;
if (global == NULL)
global = _global.ref().get();

CCLOG(“evalString = %s”, string);
JSAutoCompartment ac(cx, global);
return JS_EvaluateScript(cx, JS::RootedObject(cx, global), string, strlen(string), “ScriptingCore::evalString”, 1);
}

有谁遇到过这个问题,求解决方案?

我也碰到了。问题还挺复杂,是字符编码在不同层面解析导致的(占位不同),没在细细的研究下去;不过换个思路

在Java层考虑用URLEncoder.encode将存在的中文字符格式化一下;然后在Js层用decodeURI解码

//java code
userObj.put(“name”, URLEncoder.encode(str,“UTF-8”));
//js code
this.nameTxt.setString(decodeURI(this.data.name));