diff options
Diffstat (limited to 'files/fr/web/api/textencoder/index.md')
-rw-r--r-- | files/fr/web/api/textencoder/index.md | 121 |
1 files changed, 46 insertions, 75 deletions
diff --git a/files/fr/web/api/textencoder/index.md b/files/fr/web/api/textencoder/index.md index 7fb51d5498..6c9c867c62 100644 --- a/files/fr/web/api/textencoder/index.md +++ b/files/fr/web/api/textencoder/index.md @@ -10,51 +10,39 @@ tags: - TextEncoder translation_of: Web/API/TextEncoder --- -<p>{{APIRef("Encoding API")}}{{SeeCompatTable}}</p> +{{APIRef("Encoding API")}}{{SeeCompatTable}} -<p><code><strong>TextEncoder</strong></code> prend un flux de points de code en entrée et émet un flux d'octets. Pour une bibliothèque non native plus extensible, voir <a href="/en-US/Add-ons/Code_snippets/StringView"><code>StringView</code> – une représentation des chaînes de caractères proche de celle de C basée sur les tableaux typés</a>.</p> +**`TextEncoder`** prend un flux de points de code en entrée et émet un flux d'octets. Pour une bibliothèque non native plus extensible, voir [`StringView` – une représentation des chaînes de caractères proche de celle de C basée sur les tableaux typés](/en-US/Add-ons/Code_snippets/StringView). -<div class="note"> -<p><strong>Note :</strong> Firefox, Chrome et Opera ont pour habitude de supporter les types d'encodage autres que <code>utf-8</code> (tels que <code>utf-16</code>, <code>iso-8859-2</code>, <code>koi8</code>, <code>cp1261</code>, et <code>gbk</code>). À partir de Firefox 48 ({{bug(1257877)}}), Chrome 54 (<a href="https://www.chromestatus.com/feature/5630760492990464">ticket</a>) et Opera 41, aucun type d'encodage autre que <code>utf-8</code> n'est disponible, de manière à être en accord avec la <a href="https://www.w3.org/TR/encoding/#dom-textencoder">spécification</a>. Dans tous les cas, passer un type d'encodage au constructeur sera ignoré et un TextEncoder utf-8 sera créé (le {{DOMxRef("TextDecoder")}} permet toujours d'autres types pour le décodage).</p> -</div> +> **Note :** Firefox, Chrome et Opera ont pour habitude de supporter les types d'encodage autres que `utf-8` (tels que `utf-16`, `iso-8859-2`, `koi8`, `cp1261`, et `gbk`). À partir de Firefox 48 ({{bug(1257877)}}), Chrome 54 ([ticket](https://www.chromestatus.com/feature/5630760492990464)) et Opera 41, aucun type d'encodage autre que `utf-8` n'est disponible, de manière à être en accord avec la [spécification](https://www.w3.org/TR/encoding/#dom-textencoder). Dans tous les cas, passer un type d'encodage au constructeur sera ignoré et un TextEncoder utf-8 sera créé (le {{DOMxRef("TextDecoder")}} permet toujours d'autres types pour le décodage). -<div class="note"> -<p><strong>Note :</strong> Il y a une prothèse d'émulation d'implantation pour supporter tous les encodages hérités dans <a href="https://github.com/inexorabletash/text-encoding">GitHub</a>.</p> -</div> +> **Note :** Il y a une prothèse d'émulation d'implantation pour supporter tous les encodages hérités dans [GitHub](https://github.com/inexorabletash/text-encoding). -<h2 id="Constructeur">Constructeur</h2> +## Constructeur -<dl> - <dt>{{DOMxRef("TextEncoder.TextEncoder", "TextEncoder()")}}</dt> - <dd>Retourne une nouvel objet <code>TextEncoder</code> qui génèrera un flux d'octets encodés en utf-8.</dd> -</dl> +- {{DOMxRef("TextEncoder.TextEncoder", "TextEncoder()")}} + - : Retourne une nouvel objet `TextEncoder` qui génèrera un flux d'octets encodés en utf-8. -<h2 id="Propriétés">Propriétés</h2> +## Propriétés -<p><em>L'interface <code>TextEncoder</code> n'hérite d'aucune propriété.</em></p> +_L'interface `TextEncoder` n'hérite d'aucune propriété._ -<dl> - <dt>{{DOMxRef("TextEncoder.encoding")}}{{ReadOnlyInline}}</dt> - <dd>{{DOMxRef("DOMString")}} contenant le nom de l'encodeur, qui est une chaîne de caractères décrivant la méthode que l'objet <code>TextEncoder</code> utilisera.</dd> -</dl> +- {{DOMxRef("TextEncoder.encoding")}}{{ReadOnlyInline}} + - : {{DOMxRef("DOMString")}} contenant le nom de l'encodeur, qui est une chaîne de caractères décrivant la méthode que l'objet `TextEncoder` utilisera. -<h2 id="Méthodes">Méthodes</h2> +## Méthodes -<dl> -</dl> +**L'interface `TextEncoder` n'hérite d'aucune propriété**. -<p><em><em>L'interface <code>TextEncoder</code> n'hérite d'aucune propriété</em></em>.</p> +- {{DOMxRef("TextEncoder.encode()")}} + - : Retourne un [`Uint8Array`](/en-US/docs/Web/JavaScript/Typed_arrays/Uint8Array) conternant un texte encodé en utf-8. -<dl> - <dt>{{DOMxRef("TextEncoder.encode()")}}</dt> - <dd>Retourne un <a href="/en-US/docs/Web/JavaScript/Typed_arrays/Uint8Array"><code>Uint8Array</code></a> conternant un texte encodé en utf-8.</dd> -</dl> +## Prothèse d'émulation -<h2 id="Prothèse_d'émulation">Prothèse d'émulation</h2> +La prothèse d'émulation ci-dessous va uniquement répondre aux spécifications données par le W3 (par d'autre type d'encodage que UTF-8 n'est supporté, malheureusement ☹️). Elle est conçue pour fonctionner "clé en main" avec IE5. Toutefois, de IE5 à IE9, elle retournera un tableau normal plutôt qu'un tableau typé. Dans de telles circonstances et avec des navigateurs si lents, cette prothèse (ou tout autre ayant le même objectif) serait inutilisable pour de longues chaînes de caractères avec ces vieux navigateurs. Enfin, notez que vous devriez exécuter le code ci-dessous avec un minifieur (et plus particulièrement un compilateur ) to turn sequences like `0x1e << 3` into `0xf0`. These sequences are not already precomputed because they serve to aesthetically illustrate how the polyfill works. -<p>La prothèse d'émulation ci-dessous va uniquement répondre aux spécifications données par le W3 (par d'autre type d'encodage que UTF-8 n'est supporté, malheureusement ☹️). Elle est conçue pour fonctionner "clé en main" avec IE5. Toutefois, de IE5 à IE9, elle retournera un tableau normal plutôt qu'un tableau typé. Dans de telles circonstances et avec des navigateurs si lents, cette prothèse (ou tout autre ayant le même objectif) serait inutilisable pour de longues chaînes de caractères avec ces vieux navigateurs. Enfin, notez que vous devriez exécuter le code ci-dessous avec un minifieur (et plus particulièrement un compilateur ) to turn sequences like <code>0x1e << 3</code> into <code>0xf0</code>. These sequences are not already precomputed because they serve to aesthetically illustrate how the polyfill works.</p> - -<pre class="brush: js">if (typeof TextEncoder === "undefined") { +```js +if (typeof TextEncoder === "undefined") { TextEncoder=function TextEncoder(){}; TextEncoder.prototype.encode = function encode(str) { "use strict"; @@ -65,21 +53,21 @@ translation_of: Web/API/TextEncoder var resArr = typeof Uint8Array === "undefined" ? new Array(Len * 1.5) : new Uint8Array(Len * 3); for (var point=0, nextcode=0, i = 0; i !== Len; ) { point = str.charCodeAt(i), i += 1; - if (point >= 0xD800 && point <= 0xDBFF) { + if (point >= 0xD800 && point <= 0xDBFF) { if (i === Len) { resArr[resPos += 1] = 0xef/*0b11101111*/; resArr[resPos += 1] = 0xbf/*0b10111111*/; resArr[resPos += 1] = 0xbd/*0b10111101*/; break; } // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae nextcode = str.charCodeAt(i); - if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) { + if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) { point = (point - 0xD800) * 0x400 + nextcode - 0xDC00 + 0x10000; i += 1; - if (point > 0xffff) { - resArr[resPos += 1] = (0x1e/*0b11110*/<<3) | (point>>>18); - resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>12)&0x3f/*0b00111111*/); - resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>6)&0x3f/*0b00111111*/); - resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); + if (point > 0xffff) { + resArr[resPos += 1] = (0x1e/*0b11110*/<<3) | (point>>>18); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>12)&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>6)&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); continue; } } else { @@ -87,15 +75,15 @@ translation_of: Web/API/TextEncoder resArr[resPos += 1] = 0xbd/*0b10111101*/; continue; } } - if (point <= 0x007f) { - resArr[resPos += 1] = (0x0/*0b0*/<<7) | point; - } else if (point <= 0x07ff) { - resArr[resPos += 1] = (0x6/*0b110*/<<5) | (point>>>6); - resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); + if (point <= 0x007f) { + resArr[resPos += 1] = (0x0/*0b0*/<<7) | point; + } else if (point <= 0x07ff) { + resArr[resPos += 1] = (0x6/*0b110*/<<5) | (point>>>6); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); } else { - resArr[resPos += 1] = (0xe/*0b1110*/<<4) | (point>>>12); - resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>6)&0x3f/*0b00111111*/); - resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0xe/*0b1110*/<<4) | (point>>>12); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>6)&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); } } if (typeof Uint8Array !== "undefined") return resArr.subarray(0, resPos + 1); @@ -112,38 +100,21 @@ translation_of: Web/API/TextEncoder } catch(e) { /*IE6-8 fallback*/ TextEncoder.prototype.encoding = "utf-8"; } if(typeof Symbol!=="undefined")TextEncoder.prototype[Symbol.toStringTag]="TextEncoder"; } -</pre> - -<h2 id="Specifications">Specifications</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Specification</th> - <th scope="col">Status</th> - <th scope="col">Comment</th> - </tr> - <tr> - <td>{{SpecName("Encoding", "#interface-textencoder", "TextEncoder")}}</td> - <td>{{Spec2("Encoding")}}</td> - <td>Initial definition.</td> - </tr> - </tbody> -</table> +``` -<h2 id="Browser_compatibility">Browser compatibility</h2> +## Specifications -<div> +| Specification | Status | Comment | +| ---------------------------------------------------------------------------------------- | ---------------------------- | ------------------- | +| {{SpecName("Encoding", "#interface-textencoder", "TextEncoder")}} | {{Spec2("Encoding")}} | Initial definition. | +## Browser compatibility -<p>{{Compat("api.TextEncoder")}}</p> -</div> +{{Compat("api.TextEncoder")}} -<h2 id="See_also">See also</h2> +## See also -<ul> - <li>The {{DOMxRef("TextDecoder")}} interface describing the inverse operation.</li> - <li><a href="/en-US/Add-ons/Code_snippets/StringView"><code>StringView</code></a> – a C-like representation of strings based on typed arrays</li> - <li>A <a href="https://github.com/inexorabletash/text-encoding">shim</a> allowing to use this interface in browsers that don't support it.</li> - <li><code><a href="/en-US/docs/Components.utils.importGlobalProperties">Components.utils.importGlobalProperties</a></code></li> -</ul> +- The {{DOMxRef("TextDecoder")}} interface describing the inverse operation. +- [`StringView`](/en-US/Add-ons/Code_snippets/StringView) – a C-like representation of strings based on typed arrays +- A [shim](https://github.com/inexorabletash/text-encoding) allowing to use this interface in browsers that don't support it. +- [`Components.utils.importGlobalProperties`](/en-US/docs/Components.utils.importGlobalProperties) |