From 6d6faeb2d80fa300142ed65781a63845159ff3ed Mon Sep 17 00:00:00 2001 From: purusah Date: Wed, 12 Jan 2022 00:42:02 +0200 Subject: [PATCH 1/4] P1 --- 4-binary/02-text-decoder/article.md | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index a0c80145c..ccd8b237b 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -1,30 +1,30 @@ # TextDecoder and TextEncoder -What if the binary data is actually a string? For instance, we received a file with textual data. +А якщо бінарні дані є просто рядком? Наприклад, ми отримали файл з текстовими даними. -The built-in [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) object allows one to read the value into an actual JavaScript string, given the buffer and the encoding. +Вбудований об’єкт [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) дає змогу прочитати дані в JavaScript рядок із заданого буферу з потрібним кодуванням. -We first need to create it: +Але для початку його необхідно створити: ```js let decoder = new TextDecoder([label], [options]); ``` -- **`label`** -- the encoding, `utf-8` by default, but `big5`, `windows-1251` and many other are also supported. -- **`options`** -- optional object: - - **`fatal`** -- boolean, if `true` then throw an exception for invalid (non-decodable) characters, otherwise (default) replace them with character `\uFFFD`. - - **`ignoreBOM`** -- boolean, if `true` then ignore BOM (an optional byte-order Unicode mark), rarely needed. +- **`label`** -- кодування, типово `utf-8`, але `big5`, `windows-1251` та багато інших наборів теж підтримується. +- **`options`** -- необов’язковий об’єкт: + - **`fatal`** -- булевий параметр, якщо передано `true` -- буде згенеровано виключення для символі, що не можуть бути декодованими, в іншому випадку (типово) символи будуть замінені на `\uFFFD`. + - **`ignoreBOM`** -- булевий параметр, якщо передано `true` -- буде проігноровано BOM (необов’язковий маркер порядку байтів), в цілому потрібно рідко. -...And then decode: +...А потім декодувати: ```js let str = decoder.decode([input], [options]); ``` -- **`input`** -- `BufferSource` to decode. -- **`options`** -- optional object: - - **`stream`** -- true for decoding streams, when `decoder` is called repeatedly with incoming chunks of data. In that case a multi-byte character may occasionally split between chunks. This options tells `TextDecoder` to memorize "unfinished" characters and decode them when the next chunk comes. +- **`input`** -- `BufferSource` буфер для декодування. +- **`options`** -- необов’язковий об’єкт: + - **`stream`** -- значення `true`, якщо потрібно декодувати потік (stream), тоді `decoder` буде викликано повторно декілька разів для отримання вхідних даних частинами. В такому випадку символи, що складають з декількох байт можуть бути випадково розділеними між частинами. Ця опціям дозволяє `TextDecoder` запам’ятати "незакінчені" символи для декодування разом з наступною частиною. -For instance: +Наприклад: ```js run let uint8Array = new Uint8Array([72, 101, 108, 108, 111]); @@ -39,14 +39,14 @@ let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]); alert( new TextDecoder().decode(uint8Array) ); // 你好 ``` -We can decode a part of the buffer by creating a subarray view for it: +Також дозволено декодувати частину буферу за допомогою створення представлення тільки з частиною масиву: ```js run let uint8Array = new Uint8Array([0, 72, 101, 108, 108, 111, 0]); -// the string is in the middle -// create a new view over it, without copying anything +// рядок всередині між першим та останнім байтом +// створення нового представлення без копіювання масиву let binaryString = uint8Array.subarray(1, -1); alert( new TextDecoder().decode(binaryString) ); // Hello From 12371d372dc69886bdff36ccba68af91dda4d4d4 Mon Sep 17 00:00:00 2001 From: purusah Date: Wed, 12 Jan 2022 22:14:40 +0200 Subject: [PATCH 2/4] P2 --- 4-binary/02-text-decoder/article.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index ccd8b237b..f14694e16 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -22,7 +22,7 @@ let str = decoder.decode([input], [options]); - **`input`** -- `BufferSource` буфер для декодування. - **`options`** -- необов’язковий об’єкт: - - **`stream`** -- значення `true`, якщо потрібно декодувати потік (stream), тоді `decoder` буде викликано повторно декілька разів для отримання вхідних даних частинами. В такому випадку символи, що складають з декількох байт можуть бути випадково розділеними між частинами. Ця опціям дозволяє `TextDecoder` запам’ятати "незакінчені" символи для декодування разом з наступною частиною. + - **`stream`** -- значення `true`, якщо потрібно декодувати потік (stream), тоді `decoder` буде викликано повторно декілька разів для отримання вхідних даних частинами. В такому випадку символи, що складають з декількох байт можуть бути випадково розділеними між частинами. Ця опція дозволяє `TextDecoder` запам’ятати "незакінчені" символи для декодування разом з наступною частиною. Наприклад: @@ -54,19 +54,19 @@ alert( new TextDecoder().decode(binaryString) ); // Hello ## TextEncoder -[TextEncoder](https://encoding.spec.whatwg.org/#interface-textencoder) does the reverse thing -- converts a string into bytes. +[TextEncoder](https://encoding.spec.whatwg.org/#interface-textencoder) працює зворотнім чином -- перетворює рядок в байти. -The syntax is: +Синтаксис: ```js let encoder = new TextEncoder(); ``` -The only encoding it supports is "utf-8". +Підтримується тільки кодування "utf-8". -It has two methods: -- **`encode(str)`** -- returns `Uint8Array` from a string. -- **`encodeInto(str, destination)`** -- encodes `str` into `destination` that must be `Uint8Array`. +Він має два методи: +- **`encode(str)`** -- повертає `Uint8Array` створений з рядку. +- **`encodeInto(str, destination)`** -- `str` буде закодовано та записано в `destination`. Параметр `destination` повинен мати тип `Uint8Array`. ```js run let encoder = new TextEncoder(); From d1677325284db185ef59304a9c6a1fd78496f415 Mon Sep 17 00:00:00 2001 From: purusah Date: Wed, 12 Jan 2022 22:25:43 +0200 Subject: [PATCH 3/4] P3 --- 4-binary/02-text-decoder/article.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index f14694e16..60924e132 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -2,7 +2,7 @@ А якщо бінарні дані є просто рядком? Наприклад, ми отримали файл з текстовими даними. -Вбудований об’єкт [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) дає змогу прочитати дані в JavaScript рядок із заданого буферу з потрібним кодуванням. +Вбудований об’єкт [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) дає змогу записати дані в JavaScript рядок із заданого буферу з потрібним кодуванням. Але для початку його необхідно створити: ```js @@ -11,8 +11,8 @@ let decoder = new TextDecoder([label], [options]); - **`label`** -- кодування, типово `utf-8`, але `big5`, `windows-1251` та багато інших наборів теж підтримується. - **`options`** -- необов’язковий об’єкт: - - **`fatal`** -- булевий параметр, якщо передано `true` -- буде згенеровано виключення для символі, що не можуть бути декодованими, в іншому випадку (типово) символи будуть замінені на `\uFFFD`. - - **`ignoreBOM`** -- булевий параметр, якщо передано `true` -- буде проігноровано BOM (необов’язковий маркер порядку байтів), в цілому потрібно рідко. + - **`fatal`** -- булевий параметр, якщо передано `true` -- буде згенеровано виключення для символів, що не можуть бути декодованими, в іншому випадку (типово) символи будуть замінені на `\uFFFD`. + - **`ignoreBOM`** -- булевий параметр, якщо передано `true` -- буде проігноровано BOM (необов’язковий маркер порядку байтів), рідко трапляється в нагоді. ...А потім декодувати: @@ -39,7 +39,7 @@ let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]); alert( new TextDecoder().decode(uint8Array) ); // 你好 ``` -Також дозволено декодувати частину буферу за допомогою створення представлення тільки з частиною масиву: +Також дозволено декодувати буферу частково за допомогою створення представлення тільки з частиною масиву: ```js run @@ -64,7 +64,7 @@ let encoder = new TextEncoder(); Підтримується тільки кодування "utf-8". -Він має два методи: +Об’єкт має два методи: - **`encode(str)`** -- повертає `Uint8Array` створений з рядку. - **`encodeInto(str, destination)`** -- `str` буде закодовано та записано в `destination`. Параметр `destination` повинен мати тип `Uint8Array`. From e13fde64dca3d727e46270006f94fb6216e0c4d5 Mon Sep 17 00:00:00 2001 From: purusah Date: Sat, 15 Jan 2022 23:00:52 +0200 Subject: [PATCH 4/4] P4 --- 4-binary/02-text-decoder/article.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index 60924e132..f7aacb829 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -1,4 +1,4 @@ -# TextDecoder and TextEncoder +# TextDecoder та TextEncoder А якщо бінарні дані є просто рядком? Наприклад, ми отримали файл з текстовими даними. @@ -9,10 +9,10 @@ let decoder = new TextDecoder([label], [options]); ``` -- **`label`** -- кодування, типово `utf-8`, але `big5`, `windows-1251` та багато інших наборів теж підтримується. -- **`options`** -- необов’язковий об’єкт: - - **`fatal`** -- булевий параметр, якщо передано `true` -- буде згенеровано виключення для символів, що не можуть бути декодованими, в іншому випадку (типово) символи будуть замінені на `\uFFFD`. - - **`ignoreBOM`** -- булевий параметр, якщо передано `true` -- буде проігноровано BOM (необов’язковий маркер порядку байтів), рідко трапляється в нагоді. +- **`label`** -- кодування, типово `utf-8`, але також підтримуються `big5`, `windows-1251` та багато інших кодувань. +- **`options`** -- необов’язковий об’єкт, який задає додаткові налаштування декодера: + - **`fatal`** -- булевий параметр, якщо передано `true` -- буде згенеровано виключення для символів, які не вдасться декодувати, в іншому випадку (типово) вони будуть замінені на символ `\uFFFD`. + - **`ignoreBOM`** -- булевий параметр, якщо передано `true` -- буде проігноровано BOM (Byte order mark — необов’язковий маркер порядку байтів), рідко трапляється в нагоді. ...А потім декодувати: @@ -39,7 +39,7 @@ let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]); alert( new TextDecoder().decode(uint8Array) ); // 你好 ``` -Також дозволено декодувати буферу частково за допомогою створення представлення тільки з частиною масиву: +Також можливо частково декодувати буфер за допомогою створення представлення тільки з частиною масиву: ```js run