TextEncoder#

TextEncoder.encode()#

Metoda encode() koduje przekazane dane tekstowe przy użyciu koderTE skojarzonego z danym koderem tekstowym i zwraca obiekt typu Uint8Array, z którego można odczytać zakodowane bajty.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var typed_array = textEncoder.encode([input = ""]);

gdzie poszczególne człony oznaczają:

Algorytm wywołania metody encode(input) nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Przekształć input do strumienia.
  2. Niech output będzie nowym strumieniem.
  3. Dopóki (while) prawda:

    1. Niech token będzie wynikiem odczytu z input.
    2. Niech result będzie wynikiem przetwarzania z przekazaniem token, koderaTE, input oraz output.
    3. Jeśli result jest zakończeniem, to przekształć output do sekwencji bajtów i zwróć obiekt typu Uint8Array, który przechowuje obiekt typu ArrayBuffer zawierający output.

      Kodowanie wspierane przez metodę encode() nigdy nie zwraca błędu.

Metoda encode() nie pobiera drugiego argumentu w postaci obiektu z właściwością stream, w przeciwieństwie do metody TextDecoder.decode(), gdyż żaden koder nie wymaga buforowania wartości skalarnych.

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<!DOCTYPE html>
<html>

<head>

	<script>

		function makeEncode(input, variant){

			var new_encoder = new TextEncoder();
			var info = document.getElementById("info");

			if (variant){
				var encoded = new_encoder.encode();
			}
			else{
				var encoded = new_encoder.encode(input);
			}

			var bytes_10 = "";
			var bytes_16 = "";
			var bufferLen = encoded.length;

			for (var i = 0; i < bufferLen; i++){
				bytes_10 += encoded[i] + " ";
				bytes_16 += encoded[i].toString(16) + " ";
			}

			info.innerHTML = "Interfejs kodera tekstowego: " + new_encoder
					+ "<br>" + "Właściwość encoding: " + new_encoder.encoding
					+ "<br><br>" + "Argument z metody encode(): " + input
					+ "<br>" + "Obiekt zwracany przez metodę encode(): " + encoded
					+ "<br>" + "encoded.length: " + encoded.length
					+ "<br>" + "encoded.byteLength: " + encoded.byteLength
					+ "<br>" + "encoded.buffer: " + encoded.buffer
					+ "<br>" + "encoded.BYTES_PER_ELEMENT: " + encoded.BYTES_PER_ELEMENT
					+ "<br>" + "Wszystkie bajty z encoded (dziesiętnie): " + bytes_10
					+ "<br>" + "Wszystkie bajty z encoded (hex): " + bytes_16;

		}

	</script>

</head>

<body>
	<p>Kliknij przycisk by zakodować dane tekstowe przy użyciu kodowania UTF-8.</p>
	<ul>
		<li>
			<div>Dane wejściowe bez surogatów:</div>
			<input type="button" value="encode()" onclick="makeEncode('', 1)">
			<input type="button" value="encode('')" onclick="makeEncode('')">
			<input type="button" value="encode(' ')" onclick="makeEncode(' ')">
			<input type="button" value="encode('a')" onclick="makeEncode('a')">
			<input type="button" value="encode('A')" onclick="makeEncode('A')">
			<input type="button" value="encode('ą')" onclick="makeEncode('ą')">
			<input type="button" value="encode('źdźbło')" onclick="makeEncode('źdźbło')">
			<input type="button" value="encode('\u007F')" onclick="makeEncode('\u007F')">
			<input type="button" value="encode('\u0091')" onclick="makeEncode('\u0091')">
			<input type="button" value="encode('\u0092')" onclick="makeEncode('\u0092')">
			<input type="button" value="encode('\u07FF')" onclick="makeEncode('\u07FF')">
			<input type="button" value="encode('\uFFFF')" onclick="makeEncode('\uFFFF')">
			<input type="button" value="encode('\u10FFFF')" onclick="makeEncode('\u10FFFF')">
			<input type="button" value="encode('\u{10FFFF}')" onclick="makeEncode('\u{10FFFF}')">
		</li>
		<li>
			<div>Dane wejściowe z surogatami(najpierw automatycznie
				 mapowanymi przez silnik JS na znak zastępczy U+FFFD):</div>
			<input type="button" value="encode('\uD800')" onclick="makeEncode('\uD800')">
			<input type="button" value="encode('\uDBFF')" onclick="makeEncode('\uDBFF')">
			<input type="button" value="encode('\uDC00')" onclick="makeEncode('\uDC00')">
			<input type="button" value="encode('\uDFFF')" onclick="makeEncode('\uDFFF')">
		</li>
	</ul>

	<p style="color: blue;">Szczegółowe informacje dla przeprowadzonej operacji kodowania:</p>
	<p id="info"></p>
</body>

</html>

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
[Exposed=(Window,Worker)]
interface TextEncoder {
	[NewObject] Uint8Array encode(optional USVString input = "");
};

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

TextEncoder (H1) TextEncoder.encode() (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)