javascript 转义字符的困惑
我有一个base64编码的原始字符串,我想解码以后替换其中的一部分内容,需要将其中 Unicode 字符转成 Unicode 码点,但是是生成的是双反斜杠的,我无论如何都替换不成单反斜杠的。简单说我想将
[{"name":"String","value":"EFG\\u6DF1\\u5733"}]
转换成
[{"name":"String","value":"EFG\u6DF1\u5733"}]
困扰了几天毫无结果,哪位大佬能指点一下。
测试代码
function stringToUnicode(str) {
let unicodeString = '';
for (let i = 0; i < str.length; i++) {
let charCode = str.charCodeAt(i);
if (charCode > 0x100) { // 对于非 ASCII 字符
let unicode = '\\u' + charCode.toString(16).toUpperCase();
unicodeString += unicode;
} else { // 对于 ASCII 字符,直接添加字符
unicodeString += str[i];
}
}
return unicodeString;
}
const string = 'W3sibmFtZSI6IlN0cmluZyIsInZhbHVlIjoiQUJDXHU1MzE3XHU0ZWFjIn1d';
const dataStr = Buffer.from(string, 'base64').toString();
console.log(dataStr); // [{"name":"String","value":"ABC\u5317\u4eac"}]
// 将 Base64 编码的字符串转换为 JSON 数据
var jsonData = JSON.parse(dataStr);
var string2 = stringToUnicode('EFG深圳');
string2 = string2.replace(/\\\\/g, '\\');
//string2 = `${string2.replace(/\\\\/g, '\\')}`;
jsonData[0].value = string2;
//console.log(jsonData);
// 将解析后的 JSON 数据序列化为字符串
const jsonString = JSON.stringify(jsonData);
console.log(jsonString); // [{"name":"String","value":"EFG\\u6DF1\\u5733"}]
// 将 JSON 字符串转换为 Base64 编码
const base64EncodedNode = Buffer.from(jsonString, 'utf8').toString('base64');
console.log(base64EncodedNode);