【问题标题】:How to replace or encode single and right double quotation mark in JavaScript?如何在 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

【问题讨论】:

标签: javascript special-characters encode quotes


【解决方案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,我在主要问题中添加了一条评论,显示堆栈溢出中的类似问题。
    猜你喜欢
    • 2013-05-03
    • 2011-12-07
    • 2011-01-26
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多