Technology Aug 25, 2026 · 2 min read

Q&D: String and Iterable in Dart

By default, Strings in Dart can't be used as Iterable, they must be converted to a List<int> or another kind of Iterable class. To do that, one must import the dart:convert module and start playing with the converters. A pure ASCII string can be converted using ascii.encode(str), where str is...

DE
DEV Community
by Mathieu Kerjouan
Q&D: String and Iterable in Dart

By default, Strings in Dart can't be used as Iterable, they must be converted to a List<int> or another kind of Iterable class. To do that, one must import the dart:convert module and start playing with the converters.

A pure ASCII string can be converted using ascii.encode(str), where str is the String to convert to List<int>.

import 'dart:convert';

void main() {
  final str = "hello world";
  for (var c in ascii.encode(str)) {
    print("${c} (${String.fromCharCode(c)})");
  }
}
$ dart run
104 (h)
101 (e)
108 (l)
108 (l)
111 (o)
32 ( )
119 (w)
111 (o)
114 (r)
108 (l)
100 (d)

The same can be done with utf8 Strings as well.

import 'dart:convert';

void main() {
  final str = "波動拳: ↓↙←Ⓑ";
  for (var c in utf8.encode(str)) {
    print("${c} (${String.fromCharCode(c)})");
  }
}
$ dart run
230 (æ)
179 (³)
162 (¢)
229 (å)
139 ()
149 ()
230 (æ)
139 ()
179 (³)
58 (:)
32 ( )
226 (â)
134 ()
147 ()
226 (â)
134 ()
153 ()
226 (â)
134 ()
144 (
226 (â)
146 ()
183 (·)

This output is "normal", because an utf8 character is encoded on 8, 16 or 32 bits, but the encoder will encode it only on 8 bits. This means an utf8 character will be split in more than one byte. A quick and dirty solution to avoid this issue is to use the String.split() method and iterate over the List generated.

void main() {
  final str = "波動拳: ↓↙←Ⓑ";
  for (var c in str.split("")) {
    print("${c} : ${utf8.encode(c)}");
  }
}
$ dart run
波 : [230, 179, 162]
動 : [229, 139, 149]
拳 : [230, 139, 179]
: : [58]
  : [32]
↓ : [226, 134, 147]
↙ : [226, 134, 153]
← : [226, 134, 144]
Ⓑ : [226, 146, 183]

The 波 character is made of 3 integers [230, 179, 162], like the rest of the unicode characters displayed. Here a list of resources talking about that:

Cover Image by Julian Schultz on Unsplash

DE
Source

This article was originally published by DEV Community and written by Mathieu Kerjouan.

Read original article on DEV Community
Back to Discover

Reading List