cocos creator 调用js,传base64参数报错

各位大神,我现在有base64字符串,要传给js,下面是代码
std::string jsCallStr = cocos2d::StringUtils::format(“nativeCallJS(”%s")", _base64Str);

如果_base64Str是普通字符串,比如“abc”,是可以成功调用js,
但如果换成base64字符串,就会有问题,报错 :ERROR: SyntaxError: Unexpected EOF,
我想应该是base64里面有特殊字符串,

所以这里请问大家,有没有好的方法传参,本人对OC,不太懂

自问自答,不使用cocos提供的format,

替换成下面的代码
NSString *str = [NSString stringWithFormat:@“nativeCallJS(”%@")",base64Str];
const char *jsCallStr = [str UTF8String];

我也遇到了这个问题,按照你的方式执行了之后 js端 对base64str的打印是 undefined

这个问题在原生回调js比较常见,因为回调js是执行了一句js语句,出问题情况一般回调参数包含了"

我目前的解决办法是在java或oc层把需要传的字符串数据简单序列化为unicode样式字符串,js收到再反序列化出来。
当然字符串会变长很多。比如abc=> “97|98|99”

oc写法大概这样


 NSMutableArray *result = [NSMutableArray array];
        for(int index = 0; index < [params length]; index++){
            NSString *charStr = [NSString stringWithFormat:@"%d",[params characterAtIndex:index]];
            [result addObject:charStr];
        }
        return [result componentsJoinedByString:@"|"];


js层收到数据大概处理还原回来


let ss = params.split("|");
        let buffer = new Uint16Array(ss.length);
        for (let i = 0; i < ss.length; i++) {
            buffer[i] = parseInt(ss[i]);
        }
        return String.fromCharCode.apply(null, buffer);

实际过程,这块封装一下,仅供参照