Українська

Текстові та повсякденні інструменти · Text Toolkit

Невидимі символи: нерозривні простори, нульові пропускні здатності

· Підземелля

Опубліковано ToolAcre · Редакція журналу

текстове очищення Унікод видавництво

Виявні текстові лінії, що відображають приховані пробіли та нульовий пропуск символів Unicode
Головна ToolAcre векторна ілюстрація

Опитування персонажів, які виглядають як ніщо — нерозривні місця, нульові пробіли і приєднувачі, байтові позначки — де вони приходять з того, що підраховують білий простір, і як їх знайти і видалити.

Два ідентичних ліній, які не дублікати, — як невидимий характер розбиває дедуплікацію і пошук

Два лінії можуть виглядати однаково в редакторі, але не мають рівності, пошуку або де-застосування перевірок. Один може містити звичайний U+0020 простір в той час як інший містить U+00A0, нерозривний простір. Характер нульової ширини може створити однакову проблему без зайнятості будь-якої видимої ширини, залишаючи видавець з двома помітно підібраними етикетками, які залишаються чіткими рядками.

Це не дивно косметичний. Приховані пункти коду можуть розбити розміри аналітики, перемогти точну операцію пошуку, зберегти дублікати або зробити копіюваний ідентифікатор невірно. Перед перезаписом вмісту ока, зберігайте копію джерела і порівнюйте підозрітні рядки систематично. Виявлений рендеринг є доказом про зовнішній вигляд, не доказуючи, що їх основний матч послідовності Unicode.

Де вони приходять з — веб-сторінок, текстових процесорів, послідовностей смайлів і копіювання-paste з PDF

Невидимі символи зазвичай прибувають через звичайну роботу. Веб-сторінки використовують нерозривні простори, щоб зберегти умови разом, текстові процесори зберігають макетно-орієнтоване розтягування, і PDF Вилучення реконструює текст з позиційних гліфів. Копіювання між тими системами може здійснювати форматування символів в CMS поле навіть коли пункт призначення відображає тільки знайомі слова і проміжки.

Інші невидимі знаки є навмисними частинами письмових систем або смайликів. Приєднувач нульової пропускної здатності може об'єднати компоненти смайлів в один символ, що відображається, в той час як приєднувачі і не-joiners впливають на формування в декількох скриптах. Що означає походження: «не можна побачити її» не означає «безпечне видалення». Чистка повинна зацікавити діагностику артефакту, не кожен характер, ширина якого відбувається нульовою.

Сім'я білого простору — звичайна, незламна, вузька і ідеологічна простора, і що JavaScript's обрізка розглядає білий простір

Унікоді міститься більше, ніж щоденний простір. U+00A0 - нерозривний простір, U+202F - це вузька нерозривна простір, а U+3000 – ідеологічний простір. JavaScript біле космічне обслуговування включає в себе ці символи, тому `trim()`, `trimStart()` і `trimEnd()` можна прибрати їх при виникненні на відповідному краю рядка.

Лінія Текстового Toolkit викликає тих, хто JavaScript методи на кожній лінії. Не нормалізуйте інтер'єрний проміжок, тому тут залишається нерозривний простір між двома словами. Його «чарівники без пробілів» статистично видаляє символи, що відповідають JavaScript `s`, яка більша, ніж ASCII простір. Використовуйте цей номер як визначений вимір, не як обіцянка, що кожен невидимий пункт коду був виключений.

Сім'я нульових пропусків — нульовий простір, приєднувач і не-joiner, слово-приєднувач і знак замовлення, які не мають білого простору на всіх

Сім'я нульового пропуску має різні правила. U+200B нульовий простір, U+200C нульова пропускна здатність, U+200D нульовий пропускний пристрій та U+2060 Ім'я файла: JavaScript білий простір. Ординарні `trim()` Тому не знімайте їх. Лінія, що містить один з цих позначок, не порожній, тому що екран не показує.

У+FEFF має два суміжні історії: на початку закодованих даних він може сигналізувати позначку байтів, в той час як в тексті він служив нульовою пропускною спроможністю не зламати простір. ECMAScript включає U+FEFF у своєму обрізці білий простір, на відміну від U + 200B через U + 200D. Порада всієї сім'ї нульової ширини як одного виду білого простору, тому суперечать дійсності JavaScript поведінка.

Визначте їх — за допомогою лічильника символів до підрахунків плям, які не відповідають тим, що ви бачите, пам'ятайте, що деякі приєднувачі прикріплюють до сусіда і залишаються прихованими

Якщо ви не можете виявити кожен випадок. ToolAcre кількість кластерів графеме з `Intl.Segmenter` при наявності. Приєднувач, який бере участь у послідовності смайликів може допомогти кілька точок коду формувати один графем, так що додавання або видалення його може змінитися, що дає змогу без створення простого однохарактерного збільшення лічильника коду.

Використовуйте декілька відчуттів разом: не вдалося точного матчу, несподіваного результату «без пробілів», що скопійовано текстом, який перевіряється у редакторі Unicode-aware або пошуку певного коду. Відповідний лічильник використовує пункти коду, коли Segmenter недоступний, тому результати також можуть відрізнятися можливістю браузера. Підрахунок вузьких розслідувань; він не є прихованим сканером або глядачем імені Unicode.

Виявлення прихованих персонажів: підрахунки забезпечують відключення, не повний інвентар

Для підтвердження копії-і-paste artifact, робота над дублікатом та відкритим пошуком та заміною в режимі regex. Пошук `[​]` і заміна з нічого не видаляє нульові пробіли та вбудовані U+FEFF символи по всьому тексту. Інструмент компілює візерунок з JavaScript’ глобальний прапор, повідомляє про зміну заміни, і залишає текст, що незмінний, якщо шаблон недійсний.

Не автоматично розширюйте шаблон `[​-‍]`. Асортимент також видаляє U + 200C і U + 200D, які можуть змінити форму скрипта і розбити до окремих символів. Додайте ці пункти коду тільки при перевірці доводить, що вони небажані. Після заміни, запускати дедукціонацію і порівняти вихід з збереженим оригінальним до публікації.

Зароблений приклад: видалити тільки підтверджені небажані символи нульового пропуску перед видаленням

Ця чистка не є адресним непрямим контрольним символами, гомогліфами або кожним питанням безпеки, пов'язаним з текстом confusing. Прямокутні позначки можуть змінювати візуальне замовлення, в той час як гомогліфові атаки використовують різні видимі символи, які нагадують один інший. Проблемні проблеми вирішуються шляхом видалення пробілів, а недискримінація невидимого гаманця regex може пошкодити законний багатомовний вміст при відсутності фактичного ризику.

Інструментарій також не виводить прапори regex, такі як Unicode або багатоканальний режим, виділити кожен майбутній матч або крок за допомогою замін. Замініть всі роботи в повному тексті, тому кількість повідомлень і дії Undo є важливими запобіжниками. Для початкового коду, правової копії або негайних скриптів, перевірте кожного персонажа з виділеним інструментом Unicode перед створенням сипучих редагувань.

Відправка — невидима не означає нешкідливих; лічильник тексту і regex знахідка і видалення їх, не залишаючи браузера

Невидимий не означає порожній, змінний або шкідливий. Нерозривні місця - це білий простір з розміткою семантика; нульова пропускна здатність з'єднувачів може здійснювати формування семантики; U+FEFF по-різному JavaScript обрізка. Точне очищення починається шляхом нагадування точки коду, розуміння того, чому він може бути присутнім і позбавляючи, чи є пункт призначення ще потребує його функції.

Використовуйте програму Text Toolkit як керований браузер-західний робочий стіл: кількість може виставити невідповідність, regex find-and-replace може видалити точно визначений набір, а де-застосування може підтвердити, що приховані відмінності пішли. Збережіть оригінальні, не втрачайте приєднувачів за замовчуванням і перевірте результат. Вузька, рецензована корекція є безпечніше, ніж лікування всіх невидимих Unicode як сміття.