Как преобразовать байты типов символов IBM в строку в Dart? - PullRequest
0 голосов
/ 30 марта 2019

У меня есть некоторые данные (вероятно, семейство ISO8859 ...), поступающие через сервер IBM (преобразованный из IBM в Oracle), как показано ниже. Мне нужно преобразовать эти байты в строку. Но не может напечатать полную строку. Просто показывает какой-то мусорный характер.

  List<int> bytesIBM = [135, 128, 167, 166, 141, 152, 159, 158, 148, 153, 129, 154];
  String s = new String.fromCharCodes(bytesIBM);
  print("_ibm: $s");
  print("-------------------------------");

И вывод: _ibm: §¦ÂÂÂÂÂÂÂ

Как преобразовать байты типов символов IBM в строку в Dart?

Обновление:

Если я использую это, я получаю ошибку:

 List<int> bytesIBM = [135, 128, 167, 166, 141, 152, 159, 158, 148, 153, 129, 154];
  String s = utf8.decode(bytesIBM);
  print("_ibm: $s");
  print("-------------------------------");

Ошибка:

Unhandled exception:
FormatException: Bad UTF-8 encoding 0x87 (at offset 0)
#0      _Utf8Decoder.convert (dart:convert/utf.dart:568:13)
#1      Utf8Decoder.convert (dart:convert/utf.dart:344:13)
#2      Utf8Codec.decode (dart:convert/utf.dart:66:60)
#3      main (file:///home/capital/IdeaProjects/untitled/bin/main.dart:47:19)
<asynchronous suspension>
#4      _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:287:32)
#5      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)

Process finished with exit code 255
...