やっぱりDはおかしい

D言語は文字列の内部フォーマットにUTF-8を使っていて、なんだか多言語対応的な素振りを見せているのですが、文字列を普通にコンソールとかに出力するとUTF-8をそのまま吐いてくれやがって、Shift-JISやEUC-JPな環境だとちとめんどいです。
で、そんなD言語も、Unicode使ってるんだから日本語をまともに操作するくらいできるんじゃないか、と思っていたのが間違いでした。
なにがあったかというと、

import std.string;
import std.stdio;

void main() {
  writefln("%s", find("あいうえお",'い'));
}

で、

$ dmd -run unicode.d
3

という非常に素晴らしい挙動を示してくださいました!*1
つーかcharを8bit UTF-8文字とか定義してる時点で微妙に怪しげなんですが。
8bitなのかUTF-8一文字なのかはっきりしなさい!

*1:UTF-8だと日本語は3バイト使う