Я на самом деле получаю данные из моей базы данных MySQL, в которой есть текст с акцентами, как
«é è à â ê …»
но когда я отрисовываю его в свой файл ejs с помощью node.js, он показывает
«h lo» для «hélo»
.
Проблема легко решается с помощью PHP и функции htmlspecialchars(str);
есть ли эквивалент для этой функции в Node?
Спасибо
Прежде всего, если вы правильно установили кодировку (на странице html и в базе данных или конвертировали перед вставкой / после выбора), вам не нужно преобразовывать специальные символы в сущности HTML, чтобы избежать описанного поведения. htmlspecialchars()
следует использовать, чтобы запретить людям публиковать HTML <
а также >
в <
а также >
).
Если вам все еще нужно экранировать специальные символы HTML, взгляните на этот пакет NPM: https://www.npmjs.com/package/html-entities
Используйте это так:
const Entities = require('html-entities').AllHtmlEntities;
const entities = new Entities();
console.log(entities.encode("éèàâê");
будет выводить
éèàâê
Других решений пока нет …