Tengo una cadena que contiene este “No.” como ves, no son comillas dobles normales. Traté de codificarlo manualmente usando replace así
var stmt = "select “No.”"; stmt = stmt.replace('“', '\u201c'); stmt = stmt.replace('”', '\u201d'); console.log(stmt); Pero cuando registro stmt , encuentro que nada cambió y registra este “No.” . ¿Cómo puedo codificar tales caracteres especiales en Javascript? Estoy usando sequelize para insertar esta declaración en la base de datos y necesito codificarla para que se muestre correctamente dentro de una cadena JSON, por lo que el resultado final debería ser \u201cNo.\u201d
Debe usar el carácter de escape \ para evitar que JS interprete "\u201c" y "\u201d" como caracteres Unicode.
Mira esto:
var stmt = "select “No.”"; stmt = stmt.replace('“', '\\u201c'); stmt = stmt.replace('”', '\\u201d'); console.log(stmt);No hay necesidad de usar las referencias Unicode. Simplemente pase las citas como de costumbre, entre comillas simples.
var stmt = "select “No.”"; stmt = stmt.replace('“', '"'); stmt = stmt.replace('”', '"'); console.log(stmt);1) Es mejor reemplazar todos los caracteres de una sola vez, use regex /“|”/g :
var stmt = "select “No.”"; stmt = stmt.replace(/“|”/g, '"'); console.log(stmt);2) También puede usar replaceAll aquí como:
var stmt = "select “No.”"; stmt = stmt.replaceAll(/“|”/g, '"'); console.log(stmt);3) También puede reemplazarlo usando su valor Unicode como:
var stmt = "select “No.”"; stmt = stmt.replaceAll(/\u201C|\u201D/g, '"'); console.log(stmt);