В зависимости от количества участников, использующих CMS, честно говоря, я думаю, что самая безопасная и простая из возможных ставок - попытаться перечислить всех нелегальных персонажей и предоставить свои собственные замены.По моему опыту, список обычно довольно мал - четыре умных кавычки, m-тире, многоточие, неразрывный пробел, как правило, единственные преступники, которых я вижу.Каждая компания может немного отличаться (некоторые компании часто используют TM, Copyright и Registered, но вы часто будете видеть этих персонажей, и вам нужно будет добавить их в свой список только один раз).Акценты и диакритические знаки в настоящее время не являются проблемой.
Я подозреваю, что проблема усложняется из-за того, что кодировка символов для этих символов, кажется, связана с шрифтом, который выбирает пользователь - это единственный способ, которым я могу объяснить двух пользователей, сидящих рядомна одинаково настроенных машинах, производящих разные расширенные символы.Поэтому выполните поиск по тексту вашего сайта для любых расширенных символов и добавьте их вручную в файл JavaScript, сохраненный в UTF-8.
Пример кода может выглядеть следующим образом:
strProblemText = "“I’d say, ‘Get’em all…” – Pokemon Master©";
arrExtendedChars = "“”‘’…–©".split('')
arrReplacements = ['"','"',"'","'",'...','-','©'];
for (var i = 0; i < arrExtendedChars.length; i++) {
strProblemText = strProblemText.replace(new RegExp(arrExtendedChars[i],"ig"),arrReplacements[i])
}
alert(strProblemText);
Синтаксис второй строки представляет собой небольшую головную боль, но он в основном разбивает строку на массив из отдельных символов и позволяет хранить все проблемные символы вместе в одной строке.Мне просто легче поддерживать.Другие могут немного не согласиться.Третьи все еще могут думать, что я безумен.
Как уже упоминалось @Pointy, лучше всего делать это, когда текст поступает в базу данных, или, по крайней мере, до его отправки на страницу пользователя, но делать это после того, как текст был отправлен изагруженный вариант по-прежнему является жизнеспособным.