M$ and Java have chosen to use utf16 as their default Unicode character encoding. I am sure, the decision was not made without good reasoning. What are their arguments? Why does D propagate utf8 as the default? E.g. Exception.msg Object.toString() new std.stream.File( char[] )