json - JSON.stringified() 对象中的文本编码问题

标签 json node.js unicode utf-8 ejs

我有一个index.html,其中的a 将文本发送到PHP 代码。该 PHP 通过 POST (curl) 再次将其发送到 Node.js 服务器,插入 JSON 消息(utf8 编码)

//Node.js server file (app.js) -- gets the json and shows it in a <script> to save it in client JS
render(index, {json:{string:"mystring"}})

//Template to render (index.ejs)
var data = <%=JSON.stringify(json)%>;

这样我就可以将 JSON 中的这些变量传递给数据。 JSON 比这里大得多,我只写了产生错误的部分:这里包含的字符串会产生“无效字符”JS 错误。我应该怎么办 ?我应该使用哪种编码/解码/转义?

我到处都有 utf-8,因为我的所有其他字符串都可以工作,即使是德语或阿拉伯字符。在这种特殊情况下,这是下面的“mystring”,它破坏了应用程序:

enter image description here

如果我删除红色圆圈中的字符,它就会起作用。

这是我收到的 JSON 中的字符串:

"Otto\nTheater-, Konzert- und Gpb\n\u2028\u2028Rhoasse\u00dfe 20\u2028\n51065 K\u00f6ln\n\nTelefon: 0000-000000-0\u2028\nTelefax: 0000-000000\n\nE-Mail: address@mail.com\u2028"

因为是用户输入的文本,所以我必须处理这种字符。我无权访问代码的 PHP 部分,只能访问 NodeJS 和客户端 JS。如何在 JS 中查找并删除/转换这些字符?

最佳答案

<%- JSON.stringify(data).replace(/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, "\\n") %>;

我最终用换行符替换了无效的 unicode 字符(对于 JSON 有效,但在 JS 代码中无效)。这样问题就解决了

关于json - JSON.stringified() 对象中的文本编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075515/

相关文章:

javascript - 使用 JavaScript 解析换行符、空格和 "\"字符

ios - 在IOS上用秘钥加密json数据并用node js解密

node.js - Nodejs amqp 库用于创建与 HA Rabbitmq 服务器的连接

c - 如何将 Unicode 代码点打印为 C 中的字符?

java - Playframework 结果检查如何工作

Javascript:什么是 $result.rows.item(x) 变量类型?

ios - 如何创建自定义结构以将数组内容分配给可用变量?

javascript - xcode 使用错误的 node.js 版本

mysql - 将文本中的表情符号从 MySQL 复制到 SQL Server

android - 在 strings.xml 中使用 Unicode 字符