escape() у JavaScript — застаріле кодування символів рядка


Загальний опис

escape() - це метод JavaScript, який призначений для перетворення певних символів у рядку на їхні закодовані у вигляді URI еквіваленти. Цей метод був досить популярним в ранніх версіях JavaScript, але зараз він є застарілим і не рекомендується для використання в сучасних застосуваннях.

Спочатку розглянемо, навіщо потрібен escape(). В основному, його використовували для того, щоб перетворити символи у рядку, які могли б порушити структуру URL. Наприклад, пробіл, знак "&" або "?". Якщо такі символи вставити безпосередньо у URL, це може призвести до проблем.

Приклад:

let url = "http://example.com?name=" + escape("John Doe");

У цьому прикладі, якщо не використовувати escape(), пробіл між "John" та "Doe" міг б порушити структуру URL.

Однак, існують і інші методи, такі як encodeURIComponent() і encodeURI(), які виконують подібні завдання, але з деякими важливими відмінностями. escape() не кодує символи такі як "@", "*", "-" і "_", тоді як encodeURIComponent() це робить.

Основні особливості та прийоми роботи з escape():

  1. escape() кодує символи, які не є латинськими літерами, цифрами, а також деякими спеціальними символами, такими як "@", "*", "-" і "_".
  2. Кодування відбувається шляхом заміни символу на "%", за яким слідує два шістнадцяткових символи.

Приклад:

let text = "Hello, World!";
let encodedText = escape(text);
console.log(encodedText); // Hello%2C%20World%21

Для програмістів-початківців важливо розуміти, що, хоча escape() і корисний у певних ситуаціях, його застосування у сучасному програмуванні обмежене. Існують кращі та безпечніші методи для кодування URI, такі як encodeURIComponent() і encodeURI().

автор: Bond

Порада

Якщо ви працюєте над старим проектом або вивчаєте старий код, ви можете зустріти використання escape(). В такому випадку рекомендується замінити його на сучасніший метод кодування для забезпечення найкращої сумісності та безпеки.

автор: Bond
Нотатка

Важливо знати, які символи кодуються escape() та іншими сучасними методами. Особливо, якщо ви намагаєтеся декодувати або аналізувати закодовані рядки. Наприклад, символ "@" не буде закодований методом escape(), але буде закодований за допомогою encodeURIComponent().

автор: Bond
Нотатка

Якщо з якоїсь причини вам потрібно працювати з рядками, які були закодовані за допомогою escape(), використовуйте unescape() для правильного декодування цих рядків. Проте пам'ятайте, що для рядків, закодованих за допомогою encodeURIComponent() або encodeURI(), потрібно використовувати decodeURIComponent() та decodeURI() відповідно.

автор: Bond

Синтаксис

escape(str)

Параметри

str

Рядок, який потрібно закодувати.

автор: Bond

Повернення

string

Повертає новий рядок, в якому певні символи були замінені на їхні закодовані еквіваленти.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 3 12 3
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад демонструє, як користувач може ввести рядок у текстове поле та отримати його закодовану версію за допомогою функції escape(). Після введення рядка користувач може натиснути кнопку "Кодувати", і закодована версія рядка відобразиться нижче.

HTML

<header>
  <h2 class="title">escape()</h2>
  <p class="description">Кодує набір символів у рядок у вигляді %XX або %uXXXX.</p>
</header>
<main>
  <div class="result">
    <label for="inputText">Введіть рядок для кодування:</label>
    <input type="text" id="inputText" placeholder="Привіт, як ти?" />
    <button onclick="showEscaped()">Кодувати</button>
    <p>Результат: <span id="outputText"></span></p>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

input {
  padding: 10px;
  margin-bottom: 10px;
}

button {
  padding: 10px 15px;
  background-color: #007BFF;
  color: white;
  border: none;
  cursor: pointer;
  transition: 0.3s;
}

button:hover {
  background-color: #0056b3;
}

JS

function showEscaped() {
  const inputText = document.getElementById('inputText').value;
  const outputText = escape(inputText);
  document.getElementById('outputText').innerText = outputText;
}
//# sourceURL=pen.js
автор: Bond

У цьому прикладі ми маємо рядок specialString із спеціальними символами (кома, пробіл та знак питання). Використовуючи метод escape(), ми кодуємо ці спеціальні символи у відсотковий формат. Результатом є рядок "Привіт%2C%20як%20ти%3F", де "%2C" відповідає комі, "%20" - пробілу, та "%3F" - знаку питання.

// Ініціалізація рядка зі спеціальними символами
let specialString = "Привіт, як ти?";

// Використання escape() для кодування рядка
let escapedString = escape(specialString);

console.log(escapedString);  // Виведе: "Привіт%2C%20як%20ти%3F"
автор: Bond

У цьому прикладі рядок nonASCIIString містить не-ASCII символи (китайські ієрогліфи для слова "Токіо"). Коли ми використовуємо метод escape() для таких символів, він кодує їх у форматі "%uXXXX", де "XXXX" - це шіснадцяткове представлення символа. У нашому випадку, результатом буде рядок "%u674E%u4EAC", який відповідає ієрогліфам "東" та "京" відповідно.

// Ініціалізація рядка із не-ASCII символами
let nonASCIIString = "Місто: 東京";

// Використання escape() для кодування рядка
let escapedNonASCII = escape(nonASCIIString);

console.log(escapedNonASCII);  // Виведе: "%u674E%u4EAC"
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід