如何将非ASCII字符编码为express/jade中的\ uXXXX序列

Eri*_*rik 3 unicode escaping node.js express pug

我有以下快递路线:

var data = [
    {
        id: 1,
        title: 'aide-memoire'
    },
    {
        id:2,
        title: 'apres moi'
    }
];

app.get('/', function (req, res) {
    res.render('photo/list', {
        data: data
    });
});
Run Code Online (Sandbox Code Playgroud)

在我的JADE模板中,我得到的数据如下:

!!!5
html
    head
    body
        script
            var data = !{JSON.stringify(calculates)};
Run Code Online (Sandbox Code Playgroud)

但是我在这样的客户端上得到了这个数据数组:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script type="text/javascript">
        var data = [
            { "id":1, "title": 'aide-memoire'},
            { "id":2, "title": 'apres moi'}
        ];
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

但我需要将非ASCII字符编码为\ uXXXX序列,如下所示:

[
    {"id":1, "title": "aide-m%E9moire"},
    {"id":2, "title": "apr%E8s%20moi"}  
]
Run Code Online (Sandbox Code Playgroud)

我怎么能用快递/玉器呢?

Esa*_*ija 6

JSON.stringify(["ä", "ä"]).replace(/[\u0080-\uFFFF]/g, function(m) {
    return "\\u" + ("0000" + m.charCodeAt(0).toString(16)).slice(-4);
});
//["\u00e4","\u00e4"]
Run Code Online (Sandbox Code Playgroud)
JSON.stringify([{title: "ä"}, {title: "ä"}]).replace(/[\u0080-\uFFFF]/g, function(m) {
    return "\\u" + ("0000" + m.charCodeAt(0).toString(16)).slice(-4);
});
//[{"title":"\u00e4"},{"title":"\u00e4"}]
Run Code Online (Sandbox Code Playgroud)

虽然这是完全无用的,但它不会为CPU提供更大的响应而占用CPU:/请记住,node.js中使用的每个CPU周期都是CPU周期,除非您进行集群,否则整个服务器都会关闭.