Javascript 在解码base64编码的json对象时,如何处理特殊字母(\n,\)?
在JavaScript中,我使用下面的代码从Json对象生成Base64字符串Javascript 在解码base64编码的json对象时,如何处理特殊字母(\n,\)?,javascript,python,json,base64,Javascript,Python,Json,Base64,在JavaScript中,我使用下面的代码从Json对象生成Base64字符串 let inputJson = { ... } let objJsonStr = JSON.stringify(inputJson); let objJsonB64 = Buffer.from(objJsonStr).toString('base64'); 在服务器端,我使用以下代码对其进行解码 json.loads(base64.b64decode(objJsonB64)) 但我有一些有趣的问题。 我从inp
let inputJson = { ... }
let objJsonStr = JSON.stringify(inputJson);
let objJsonB64 = Buffer.from(objJsonStr).toString('base64');
在服务器端,我使用以下代码对其进行解码
json.loads(base64.b64decode(objJsonB64))
但我有一些有趣的问题。
我从input
字段中输入了inputJson,如果input
字段包含特殊字母,则解码后的值与原始input
字段的值不同
例如,我输入了test\ntest
,但在后端得到了test\\ntest
。
因为当我在前端生成base64字符串时,JSON.stringify()函数编码如下:
\b -> \\b
\f -> \\f
\n -> \\n
\r -> \\r
\t -> \\t
\" -> \\"
\\ -> \\\\
所以,在后端解码时,结果和原来的不同。
但是当我使用带有静态值的inputJSON时,所有的东西都可以完美地工作。
当我使用input
中的特殊字母制作原始json时,会出现问题。
谁见过类似的问题?反斜杠在JSON中是一个转义字符,因此需要转义才能按字面意思发送。这一切都应该由JSON和base 64的编码器和解码器透明地处理,您不需要做任何事情?您看到的是字符串的表示形式,它也会转义反斜杠。双反斜杠实际上不在字符串中。输出与输入相同。这就是
.value
和.textContent
的美妙之处\n
否则将是一个新行。当然,如果我使用它来表示,\n
可以与\\n
相同。但我的问题是,input
用于处理密码。所以,我需要它与原始表单值相同。反斜杠在JSON中是一个转义字符,所以需要对它进行转义才能按字面意思发送。这一切都应该由JSON和base 64的编码器和解码器透明地处理,您不需要做任何事情?您看到的是字符串的表示形式,它也会转义反斜杠。双反斜杠实际上不在字符串中。输出与输入相同。这就是.value
和.textContent
的美妙之处\n
否则将是一个新行。当然,如果我使用它来表示,\n
可以与\\n
相同。但我的问题是,input
用于处理密码。所以,我需要它和原始表单值相同。