encodeUtf8 static method

int encodeUtf8(
  1. String value,
  2. Uint8List out,
  3. int offset
)

Writes the UTF-8 form of value into out starting at offset and returns the number of bytes written.

Implementation

static int encodeUtf8(String value, Uint8List out, int offset) {
  var o = offset;
  for (var i = 0; i < value.length; i++) {
    final unit = value.codeUnitAt(i);
    if (unit < 0x80) {
      out[o++] = unit;
    } else if (unit < 0x800) {
      out[o++] = 0xC0 | (unit >> 6);
      out[o++] = 0x80 | (unit & 0x3F);
    } else if (unit >= 0xD800 && unit <= 0xDBFF) {
      final low = value.codeUnitAt(++i);
      final rune = 0x10000 + ((unit - 0xD800) << 10) + (low - 0xDC00);
      out[o++] = 0xF0 | (rune >> 18);
      out[o++] = 0x80 | ((rune >> 12) & 0x3F);
      out[o++] = 0x80 | ((rune >> 6) & 0x3F);
      out[o++] = 0x80 | (rune & 0x3F);
    } else {
      out[o++] = 0xE0 | (unit >> 12);
      out[o++] = 0x80 | ((unit >> 6) & 0x3F);
      out[o++] = 0x80 | (unit & 0x3F);
    }
  }
  return o - offset;
}