It would presumably take binary, since that's the best guess that can be made statically (especially since you don't know what the file descriptor is connected to). It would probably be difficult to have Locale.Charset.encoder return anything other than binary too.
It would be cool if you could declare a Stdio.File(utf8) though. :)