当从 Grunt 传递到 CasperJS 时,字符串被破坏

String gets mangled when passed from Grunt to CasperJS

我有一个 G运行t 文件,可以使用泰语字符串从命令行执行。

grunt --data=นี่คือการทดสอบ

当我回显该字符串时,我可以看到该字符串是完整的:

นี่คือการทดสอบ

然后我用字符串生成一个 CasperJS 脚本

grunt.util.spawn({
    cmd: '/usr/local/bin/casperjs',
    args: [
        '--engine=slimerjs',
        '--ssl-protocol=any',
        '--text=' + str,
        'test.js'
    ],
},
function(error, result, code)
{
    grunt.log.writeln(error + ' | ' + result + ' | ' + code);
    done();
});

但是现在回显它让我一团糟:

à¸<99>ีà¹<88>à¸<84>ือà¸<81>ารà¸<97>à¸<94>สอà¸<9a>

情节变得复杂:我运行通过 AWS 实例上的用户数据从 cloud-init 获取这一切。 但是,当我通过 shell 运行 相同的 G运行t 命令时,脚本工作正常。 - 有什么想法吗?

想通了。

从 Grunt 进入 Casper 的字节编码发生了变化。

运行 他们通过 utf8to16http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt

一切顺利。