如何在 JavaScript 中替换或编码单引号和右双引号?
Posted
技术标签:
【中文标题】如何在 JavaScript 中替换或编码单引号和右双引号?【英文标题】:How to replace or encode single and right double quotation mark in JavaScript? 【发布时间】:2022-01-05 16:29:40 【问题描述】:我的字符串包含这个“No.”
,正如你看到的那样,这不是正常的双引号。我尝试像这样使用replace
手动对其进行编码
var stmt = "select “No.”";
stmt = stmt.replace('“', '\u201c');
stmt = stmt.replace('”', '\u201d');
console.log(stmt);
但是当我登录stmt
时,我发现根本没有任何变化,并记录了这个“No.”
。如何在 javascript 中编码这些特殊字符?我正在使用sequelize
将此语句插入数据库并需要对其进行编码以在 JSON 字符串中正确显示,因此最终结果应为\u201cNo.\u201d
【问题讨论】:
只使用单引号或反引号?'"'
或 `"`
,或用双引号转义 "\""
您可能想参考这个关于编码问题的答案:***.com/questions/53739238/…
【参考方案1】:
您需要使用转义字符\来防止JS将“\u201c”和“\u201d”解释为unicode字符。
检查一下:
var stmt = "select “No.”";
stmt = stmt.replace('“', '\\u201c');
stmt = stmt.replace('”', '\\u201d');
console.log(stmt);
【讨论】:
这个解决方案有效吗? 在插入 mysql 时还没有尝试找出问题 记录结果将仅输出 1 个反斜杠,但它与反斜杠一起插入 MySQL,因此我必须将其编辑为replace('“', '\\\u201c')
和另一个替换语句。非常感谢您的努力,我真的很感激【参考方案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);
【讨论】:
【参考方案3】:无需使用 unicode 引用。只需像往常一样在单引号内传递引号即可。
var stmt = "select “No.”";
stmt = stmt.replace('“', '"');
stmt = stmt.replace('”', '"');
console.log(stmt);
【讨论】:
是的,目前您只是用自己替换引号,因此输出保持不变。 无论如何编码它? Laravel 对其进行编码,因此它在前端显示相同,而无需将其转换为传统引号 @YashSonalia,我不确定你想说什么。传入的字符与被替换的字符明显不同。 你想记录这个吗:"select \u201cNo.\u201d"
@phpUser,我在主要问题中添加了一条评论,显示堆栈溢出中的类似问题。以上是关于如何在 JavaScript 中替换或编码单引号和右双引号?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:如何在表数据中用单引号查找和替换多引号