Недавно я ударил ошибку из-за качества данных с поддержкой браузера, и я ищу безопасное правило для применения escape-последовательности без двойного размера, если это необходимо.
Последовательность байтов UTF-8 "E2-80-A8" (U + 2028, LINE SEPARATOR), вполне допустимый символ в базе данных Unicode. Однако эта последовательность представляет собой разделитель строк (Да, другой - "0A" ).
И плохо, многие браузеры (включая Chrome, Firefox и Safari, я не тестировал других), не смогли обработать обратный вызов JSONP, который имеет строку, содержащую этот символ Unicode. JSONP был включен HTML-кодом, отличным от Юникода, который я не имел никакого контроля.
Браузеры просто сообщили об ошибке INVALID CODE/синтаксиса на таком JavaScript, который выглядит корректно из инструментов отладки и всех текстовых редакторов. Я думаю, что он может попытаться преобразовать "E2-80-A8" в BIG-5 и сломал синтаксис JS.
Вышеприведенный пример является лишь примером того, как Unicode может неожиданно нарушить вашу систему. Насколько я знаю, некоторые хакеры могут использовать RTL и другие контрольные символы для своего блага. И в спецификации Юникода есть много "кавычек", "пробелов", "символов" и "элементов управления".
Вопрос:
Есть ли список символов Unicode для каждого программиста, чтобы знать о скрытых функциях (и ошибках), которые мы, возможно, не хотим, чтобы они были эффективны в нашем приложении. (например, Windows отключает RTL в имени файла).
EDIT:
Я не прошу JSON и JavaScript. Я прошу об общей передовой практике использования Unicode во всех программах.