如何在JavaScript中替换或编码单引号和右双引号?

How to replace or encode single and right double quotation mark in JavaScript?

提问人:PHP User 提问时间:11/28/2021 最后编辑:PHP User 更新时间:11/28/2021 访问量:3553

问:

我有字符串包含这个,正如你所看到的,这不是正常的双引号。我尝试像这样手动编码它“No.”replace

var stmt = "select “No.”";
stmt = stmt.replace('“', '\u201c');
stmt = stmt.replace('”', '\u201d');

console.log(stmt);

但是当我记录时,我发现没有任何变化并记录了这一点.如何在 Javascript 中对此类特殊字符进行编码?我用于将此语句插入数据库,并需要对其进行编码才能在 JSON 字符串中正确显示,因此最终结果应该是stmt“No.”sequelize\u201cNo.\u201d

JavaScript 特殊字符 编码 引号

评论

0赞 pilchard 11/28/2021
只使用单引号或反引号? 或 ,或用双引号将其转义'"'`"`"\""
1赞 GenericUser 11/28/2021
您可能想参考以下有关编码问题的答案:stackoverflow.com/questions/53739238/...

答:

1赞 GenericUser 11/28/2021 #1

无需使用 unicode 引用。只需像往常一样在单引号内传入引号即可。

var stmt = "select “No.”";
stmt = stmt.replace('“', '"');
stmt = stmt.replace('”', '"');

console.log(stmt);

评论

0赞 Yash Sonalia 11/28/2021
是的,目前您只是用引号本身替换引号,因此输出保持不变。
0赞 PHP User 11/28/2021
无论如何要编码它?Laravel 对其进行编码,因此它在前端显示相同,而无需将其转换为传统引号
0赞 GenericUser 11/28/2021
@YashSonalia,我不确定你想说什么。传入的字符与要替换的字符明显不同。
0赞 Yash Sonalia 11/28/2021
是否要记录以下内容:"select \u201cNo.\u201d"
0赞 GenericUser 11/28/2021
@PHPUser,我在主要问题中添加了一条注释,该注释显示了堆栈溢出中的类似问题。
0赞 DecPK 11/28/2021 #2

1)最好一次性替换所有字符,使用正则表达式:/“|”/g

var stmt = "select “No.”";
stmt = stmt.replace(/“|”/g, '"');

console.log(stmt);

2)您也可以在此处使用replaceAll作为:

var stmt = "select “No.”";
stmt = stmt.replaceAll(/“|”/g, '"');

console.log(stmt);

3)您也可以使用其unicode值将其替换为:

var stmt = "select “No.”";
stmt = stmt.replaceAll(/\u201C|\u201D/g, '"');

console.log(stmt);

2赞 Yash Sonalia 11/28/2021 #3

您需要使用转义字符 \ 来防止 JS 将 “\u201c” 和 “\u201d” 解释为 unicode 字符。

检查一下:


var stmt = "select “No.”";
stmt = stmt.replace('“', '\\u201c');
stmt = stmt.replace('”', '\\u201d');

console.log(stmt);

评论

0赞 PHP User 11/28/2021
没有,还没有尝试找出插入MySQL时的问题
1赞 PHP User 11/28/2021
记录结果将仅输出 1 个反斜杠,但它与反斜杠一起插入到 MySQL 中,所以我不得不将其编辑为 be 和另一个 replace 语句。非常感谢您的努力,我真的很感激replace('“', '\\\u201c')