在线等 jsb中文乱码问题

c++层调用了此方法在js中执行全局函数nativeTest,但是打印传过来的参数是乱码(除了中文其它都显示正常),这个怎么解决啊。在线等。

ScriptingCore::getInstance()->evalString(“nativeTest(“世界你好”)”, nullptr, nullptr, nullptr, nullptr);

跟踪代码进入 ScriptingCore 这个类的evalString方法中,这里面也可以正常显示中文,但当调用JS_CompileScript和JS_ExecuteScript方法之后,在JS中就输出乱码了。

你可以传参数之前先把中文用urlencoder做下encoding,然后javascript里decode一下,这样不会乱码,是个workaround

那在js中调用c++方法读取配置文件中的中文,然后把读取到的值作为返回值传到js中打印log,这时却不是乱码,这是怎么回事啊?

楼主的字符串是网络传输获得的,估计是没有指定 HTTP Request 编码导致传回的字符串不是 utf8,所以 evalString 乱码。

可以尝试指定 http header charset=utf-8