Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript字符串解析器-转义问题_Javascript_Json_Node.js_Parsing - Fatal编程技术网

Javascript字符串解析器-转义问题

Javascript字符串解析器-转义问题,javascript,json,node.js,parsing,Javascript,Json,Node.js,Parsing,我正在运行一个节点服务器,它接收纯utf8文本并将内容解析为JSON。JSON的一部分将是HTML文档的主体 问题是,当输入包含ä或’等字符时,HTML文档会变得疯狂。我想这与解析器对这些特殊字符的编码/解码有关 有什么想法吗 [编辑] 解析和JSON对象基本上是这样的: var string = <mail_body><html> html code here...<html><mail_body> var mail_body = string

我正在运行一个节点服务器,它接收纯utf8文本并将内容解析为JSON。JSON的一部分将是HTML文档的主体

问题是,当输入包含ä或’等字符时,HTML文档会变得疯狂。我想这与解析器对这些特殊字符的编码/解码有关

有什么想法吗

[编辑]

解析和JSON对象基本上是这样的:

var string = <mail_body><html> html code here...<html><mail_body>

var mail_body = string.split("<mail_body>")[1]
var obj = {
  "subject": "subject 123",
  "mail_body": mail_body
}

您可以将此用于

var escapedText = text.replace(/\\'/g, "\\'");
并将unicode用于带眼睛的字母a

像这样->\u2665


您需要做的最重要的事情是转义传入字符串,以消除将破坏JSON的引号,这是我希望在Node-中看到的唯一重大问题。从您的输入来看,您看到了如下内容:

   var string = <mail_body><html> html code here...<html><mail_body> 
   var mail_body = string.split("<mail_body>")[1]
   mail_body = mail_body.replace(/\"/g, '\\"'); // regex for global replace, have to escape quotes

这将为您提供一个不会意外结束并破坏JSON其余部分的邮件正文。

您是否控制传入文本?取决于控制的含义。我以流的形式接收文本:stream.on'data',functionchunk{buffer=buffer+chunk.toString'utf8'}。但是数据本身来自其他来源,所以我不能删掉我不想包含的字符。你能告诉我HTML的边界是什么吗?这里真正有用的是输入可能采用的格式示例。例如,如果它是json和html的混合,那么它将比纯html更加棘手。glenatron刚刚编辑了一篇文章,展示了我解析内容和构建json对象的方式。由于我不控制输入内容,您知道如何将替换应用于具有相同输出的所有字符吗?我正在使用Node.js,所以我想一个模块可以完成这项工作,但到目前为止我找不到任何东西。