解码JavaScriopt字符串中的unicode转义序列

时间:2017-03-18 20:19:33

标签: javascript node.js

我有一个像\uC88B\uC544\uC694这样的字符串。

在节点repl(v7.4.0)中,此语句正确显示'좋아요', 但在下面的代码中,它不起作用。

var request = require('request');

request.post(
  {
    url: 'http://book.daum.net/dwr/call/plaincall/ajaxDetailController.getReviewListByPageNo.dwr',
    form: {
      callCount: 1,
      'c0-id': 0,
      'c0-scriptName': 'ajaxDetailController',
      'c0-methodName': 'getReviewListByPageNo',
      'scriptSessionId': '${scriptSessionId}714',
      'batchId': 6,
      'c0-param0': 'Object_Object:{bookid: KOR9791186757093, pageNo: 1, pageSize: 6}'
  }
}, 
(error, response, body) => {
  var str = 's2';
  var regex = new RegExp(str + `.\\w*\\=[\\"\\w\\d\\s\\\\\\&\\:\\/\\.]*\\;`, 'g');
  const arr= body.match(regex);
  /* HERE */
  console.log(arr[14].split('"')[1]);
  console.log(arr[25].split('"')[1]);
  console.log(arr[41].split('"')[1]);
  console.log(arr[35].split('"')[1]);
  console.log(arr[44].split('"')[1]);
  console.log(arr[13].split('"')[1]);
}
);

为什么它没有显示正确的字符串?

1 个答案:

答案 0 :(得分:0)

您可能需要使用JSON.parse来转义字符串数据。

不知道你的POST响应的结构,我确信这个问题有一个更优雅的解决方案,但这是我能用你提供的信息做的最好的。希望这会有所帮助。

(error, response, body) => {
  var str = 's2';
  var regex = new RegExp(str + `.\\w*\\=[\\"\\w\\d\\s\\\\\\&\\:\\/\\.]*\\;`, 'g');
  const arr = body.match(regex);
  /* HERE */
  var data = [ arr[14], arr[25], arr[41], arr[35], arr[44], arr[13] ]
    .map(function (e) { return e.split('"')[1] })
    
  data = JSON.parse('["' + data.join('","') + '"]')
  
  console.log(data)
})