sanitizeUtf16 static method

String sanitizeUtf16(
  1. String s
)

Implementation

static String sanitizeUtf16(String s) {
  if (s.isEmpty) return s;
  final codeUnits = s.codeUnits;
  final cleanUnits = <int>[];
  for (int i = 0; i < codeUnits.length; i++) {
    int unit = codeUnits[i];
    if (unit >= 0xD800 && unit <= 0xDBFF) {
      if (i + 1 < codeUnits.length &&
          codeUnits[i + 1] >= 0xDC00 &&
          codeUnits[i + 1] <= 0xDFFF) {
        cleanUnits.add(unit);
        cleanUnits.add(codeUnits[i + 1]);
        i++;
      } else {
        cleanUnits.add(0xFFFD);
      }
    } else if (unit >= 0xDC00 && unit <= 0xDFFF) {
      cleanUnits.add(0xFFFD);
    } else {
      cleanUnits.add(unit);
    }
  }
  return String.fromCharCodes(cleanUnits);
}