The comment says the default is utf-8, but the default is set to null here, which leaves this up to the impl layer. Maybe we should actually set the default in the front end?