Класс Utf8Decoder
Класс Utf8Decoder декодирует последовательность байтов,
закодированных в формате UTF-8, и возвращает строку.
Он используется совместно с классом Utf8Codec
и доступен через константу utf8.
Первым параметром можно передать флаг allowMalformed,
который разрешает декодирование некорректных
последовательностей байтов без выброса исключения.
Синтаксис
Utf8Decoder([bool allowMalformed = false])
Пример
Давайте декодируем последовательность байтов
в строку с помощью метода convert:
void main()
{
List<int> bytes = [97, 98, 99, 100, 101];
Utf8Decoder decoder = Utf8Decoder();
String res = decoder.convert(bytes);
print(res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте декодируем байты, содержащие русские символы в UTF-8:
void main()
{
List<int> bytes = [208, 191, 209, 128, 208, 184];
Utf8Decoder decoder = Utf8Decoder();
String res = decoder.convert(bytes);
print(res);
}
Результат выполнения кода:
"при"
Пример
Давайте получим декодер через константу utf8
и декодируем массив байтов:
import 'dart:convert';
void main()
{
List<int> bytes = [49, 50, 51, 52, 53];
String res = utf8.decode(bytes);
print(res);
}
Результат выполнения кода:
"12345"
Пример
Давайте передадим флаг allowMalformed,
чтобы декодировать некорректные байты
без выброса исключения:
void main()
{
List<int> bytes = [97, 98, 255, 100, 101];
Utf8Decoder decoder = Utf8Decoder(allowMalformed: true);
String res = decoder.convert(bytes);
print(res);
}
Результат выполнения кода:
"ab�de"
Смотрите также
-
класс
Utf8Codec,
который кодирует и декодирует UTF-8 -
метод
convert,
который декодирует байты в строку -
класс
Utf8Encoder,
который кодирует строку в байты UTF-8 -
функция
utf8.decode,
которая декодирует байты через константу utf8