From 9637cc1e99b6b3b4763e7f4ecf41003066e7f556 Mon Sep 17 00:00:00 2001 From: Mehrsa Arabzadeh Date: Tue, 19 Sep 2023 21:41:16 +0300 Subject: [PATCH 1/4] Update article.md till encoder --- 4-binary/02-text-decoder/article.md | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index a0c80145c..092aeb3ab 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)) درونی، به یک نفر اجازه می‌دهد که با توجه به بافر و رمزگذاری داده شده، مقدار را در یک رشته‌ی واقعی جاوااسکریپت بخواند. -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`** -- و برخی دیگر از رمزگذارای‌ها نیز پشتیبانی می‌شوند `windows-1251` و `big5` است اما `utf-8` رمزگذاری، به طور پیش فرض +- **`options`** -- :شی اختیاری + - **`fatal`** -- جایگذاری می‌کند `\uFFFD` برای کاراکتر غیرقابل قبول (غیرقابل رمزگشایی) پرتاب می‌شود. در غیر این صورت (که حالت پیش‌فرض می‌باشد)، آن‌ها را با کاراکتر (exception)باشد، یک استثنا `true` اگر مقدار آن .boolean از جنس + - **`ignoreBOM`** -- اختیاری مرتب شده برحسب بایت) که به ندرت به آن نیاز پیدا می‌شود را نادیده می‌گیرد unicode یک علامت)BOM ،باشد `true` اگر مقدار آن .boolean از جنس -...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`** -- ها، هنگامی که رمزگشا برای مقادیر قابل توجه داده‌ها مکررا فراخوانی می‌شود، درست است. در این مورد، ممکن است یک کاراکتر چند بایتی، برخی مواقع بین بخش‌هایی از داده‌ها تقسیم شود. این امکان به رمزگشای متن می‌گوید که کاراکترهای "ناتمام" را به خاطر داشته باشد و هنگامی که بخش بعدی داده وارد شد، آن‌ها را رمزگشایی کندstream برای رمزگشایی -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: +ما می‌توانیم بخشی از یک بافر را با ساخت یک view زیرآرایه برای آن، رمزگشایی کنیم: ```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 +// رشته در وسط می‌باشد +// جدید روی آن، بدون کپی کردن چیزی view ساخت یک let binaryString = uint8Array.subarray(1, -1); alert( new TextDecoder().decode(binaryString) ); // Hello From 3d07ab286f262277fa3260905a32ffc8981a130d Mon Sep 17 00:00:00 2001 From: Mehrsa Arabzadeh Date: Tue, 19 Sep 2023 21:47:38 +0300 Subject: [PATCH 2/4] edit article.md till editor --- 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 092aeb3ab..d76a29a07 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -9,10 +9,10 @@ let decoder = new TextDecoder([label], [options]); ``` -- **`label`** -- و برخی دیگر از رمزگذارای‌ها نیز پشتیبانی می‌شوند `windows-1251` و `big5` است اما `utf-8` رمزگذاری، به طور پیش فرض -- **`options`** -- :شی اختیاری - - **`fatal`** -- جایگذاری می‌کند `\uFFFD` برای کاراکتر غیرقابل قبول (غیرقابل رمزگشایی) پرتاب می‌شود. در غیر این صورت (که حالت پیش‌فرض می‌باشد)، آن‌ها را با کاراکتر (exception)باشد، یک استثنا `true` اگر مقدار آن .boolean از جنس - - **`ignoreBOM`** -- اختیاری مرتب شده برحسب بایت) که به ندرت به آن نیاز پیدا می‌شود را نادیده می‌گیرد unicode یک علامت)BOM ،باشد `true` اگر مقدار آن .boolean از جنس +- شی **`label`** -- رمزگذاری، به طور پیش فرض `utf-8` است اما `big5` و `windows-1251` و برخی دیگر از رمزگذارای‌ها نیز پشتیبانی می‌شوند. +- شی **`options`** -- شی اختیاری: + - شی **`fatal`** -- از جنس boolean. اگر مقدار آن `true` باشد، یک استثنا(exception) برای کاراکتر غیرقابل قبول (غیرقابل رمزگشایی) پرتاب می‌شود. در غیر این صورت (که حالت پیش‌فرض می‌باشد)، آن‌ها را با کاراکتر `\uFFFD` جایگذاری می‌کند. + - شی **`ignoreBOM`** -- از جنس boolean. اگر مقدار آن `true` باشد، BOM(یک علامت unicode اختیاری مرتب شده برحسب بایت) که به ندرت به آن نیاز پیدا می‌شود را نادیده می‌گیرد. ...و سپس رمزگشایی کنید: @@ -20,9 +20,9 @@ let decoder = new TextDecoder([label], [options]); let str = decoder.decode([input], [options]); ``` -- **`input`** -- برای رمزگشایی (`BufferSource`)منبع -- **`options`** -- :شی اختیاری - - **`stream`** -- ها، هنگامی که رمزگشا برای مقادیر قابل توجه داده‌ها مکررا فراخوانی می‌شود، درست است. در این مورد، ممکن است یک کاراکتر چند بایتی، برخی مواقع بین بخش‌هایی از داده‌ها تقسیم شود. این امکان به رمزگشای متن می‌گوید که کاراکترهای "ناتمام" را به خاطر داشته باشد و هنگامی که بخش بعدی داده وارد شد، آن‌ها را رمزگشایی کندstream برای رمزگشایی +- شی **`input`** -- برای رمزگشایی (`BufferSource`)منبع +- شی **`options`** -- :شی اختیاری + - شی **`stream`** -- برای رمزگشایی streamها، هنگامی که رمزگشا برای مقادیر قابل توجه داده‌ها مکررا فراخوانی می‌شود، درست است. در این مورد، ممکن است یک کاراکتر چند بایتی، برخی مواقع بین بخش‌هایی از داده‌ها تقسیم شود. این امکان به رمزگشای متن می‌گوید که کاراکترهای "ناتمام" را به خاطر داشته باشد و هنگامی که بخش بعدی داده وارد شد، آن‌ها را رمزگشایی کند. برای نمونه: From e8da61f183aef40466329b98502318fdf27c1fd4 Mon Sep 17 00:00:00 2001 From: Mehrsa Arabzadeh Date: Tue, 19 Sep 2023 21:48:39 +0300 Subject: [PATCH 3/4] Edit article.md till text encoder --- 4-binary/02-text-decoder/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/4-binary/02-text-decoder/article.md b/4-binary/02-text-decoder/article.md index d76a29a07..feef47576 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -21,7 +21,7 @@ let str = decoder.decode([input], [options]); ``` - شی **`input`** -- برای رمزگشایی (`BufferSource`)منبع -- شی **`options`** -- :شی اختیاری +- شی **`options`** -- شی اختیاری: - شی **`stream`** -- برای رمزگشایی streamها، هنگامی که رمزگشا برای مقادیر قابل توجه داده‌ها مکررا فراخوانی می‌شود، درست است. در این مورد، ممکن است یک کاراکتر چند بایتی، برخی مواقع بین بخش‌هایی از داده‌ها تقسیم شود. این امکان به رمزگشای متن می‌گوید که کاراکترهای "ناتمام" را به خاطر داشته باشد و هنگامی که بخش بعدی داده وارد شد، آن‌ها را رمزگشایی کند. برای نمونه: From 71f72aaf2ea3a71add797d19364aa07567927b47 Mon Sep 17 00:00:00 2001 From: Mehrsa Arabzadeh Date: Tue, 19 Sep 2023 21:57:23 +0300 Subject: [PATCH 4/4] Update article.md finish --- 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 feef47576..b508684e5 100644 --- a/4-binary/02-text-decoder/article.md +++ b/4-binary/02-text-decoder/article.md @@ -52,21 +52,21 @@ let binaryString = uint8Array.subarray(1, -1); 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` که باید `Uint8Array` باشد، رمزگذاری می‌کند. ```js run let encoder = new TextEncoder();