我有一个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”,它破坏了应用程序:
如果我删除红色圆圈中的字符,它就会起作用。
这是我收到的 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/