2013-03-24 37 views
2

我有以下明確的路線:如何編碼的非ASCII字符作爲快遞/玉爲 uXXXX序列

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"} 
] 

我如何在express/jade中做到這一點?

+0

你看過這個http://nodejs.org/api/buffer.html嗎? – saada 2013-03-24 08:57:40

+0

我應該如何將它用於我的情況? – Erik 2013-03-24 09:10:39

+0

它看起來像你正在尋找的編碼是unicode十六進制轉義字符...我不知道他們是如何工作的...嘗試谷歌這些關鍵字...祝你好運 – saada 2013-03-24 09:12:56

回答

4
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週期在整個服務器關閉,除非您集羣。

+0

什麼是對象的數組? [{title:「ä」}} {title:「」ä「」}] – Erik 2013-03-24 17:54:32

+0

應該沒有什麼區別,因爲整個事情正在被串聯起來 – generalhenry 2013-03-24 17:57:57

+0

@Erik是的,它可以與任何東西一起工作 – Esailija 2013-03-24 18:01:04

相關問題