我正在使用 node.js http 模块将 json 数据放入 CouchDB 中。此 json 包含特殊字符“\xc3\xa4”,这会导致 CouchDB 响应“invalid_json”错误。一旦删除或替换了这个特殊字符,数据就成功保存了。我的node.js代码:
\n\nvar data = {\n "a": "Ger\xc3\xa4t"\n};\n\nvar stringifiedData = JSON.stringify(data);\n\nvar http = http || require("http");\n\nvar requestOptions = {\n "host": "localhost",\n "port": "5984",\n "method": "PUT",\n "headers": {\n "Content-Type": "application/json",\n "Content-Length": stringifiedData.length\n },\n "path": "/testdb/test"\n};\n\nvar req = http.request(requestOptions, function (res) {\n res.setEncoding("utf8");\n res.on("data", function (chunk) {\n console.log("Response: " + chunk);\n });\n});\n\nconsole.log("stringifiedData: ", stringifiedData);\n\nreq.end(stringifiedData);\nRun Code Online (Sandbox Code Playgroud)\n\n有趣的是,如果我将这些数据保存到 json 文件中并使用curl 命令将其放入 CouchDB,则数据保存不会出现任何问题。
\n\ncurl -X PUT -d @test.json http://localhost:5984/testdb/test\nRun Code Online (Sandbox Code Playgroud)\n\n我在使用nodejs http.request()时是否错过了一些编码配置?我尝试将“Ger\xc3\xa4t”转换为“utf8”编码:Buffer.from("Ger\xc3\xa4t", …