3

我有以下快速路线:

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

app.get('/', function (req, res) {
    res.render('photo/list', {
        data: data
    });
});

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

!!!5
html
    head
    body
        script
            var data = !{JSON.stringify(calculates)};

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

<!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>

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

[
    {"id":1, "title": "aide-m%E9moire"},
    {"id":2, "title": "apr%E8s%20moi"}  
]

我怎样才能在快递/玉中做到这一点?

4

1 回答 1

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

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

尽管这完全没用,而且它消耗 CPU 以提供更大的响应:/ 请记住,node.js 中使用的每个 CPU 周期都是一个 CPU 周期,除非您进行集群,否则整个服务器都已关闭。

于 2013-03-24T17:53:03.780 回答