>>85
> そもそもどうして内部コードをUTF16なんかにしちまったのか

Windows が Unicodeに対応したNT 3.1(1993年7月リリース)を開発していた時点で
UTF-8(1993年1月発表)が存在していなかったから。
UTF-16は1989年にドラフト、1991年に1.0がリリースされている。


そもそもUTF-8が出来たのはUnixやLinuxが、1文字を2バイト固定で
扱うと言う変更についていけなかったのが理由。
C言語がASCII前提でライブラリの殆どが1バイトづつ処理しているからね。
1文字2バイトの片方に終端文字と同じ\x00が入ることがあるエンコードへの対応は困難

UTF-8にしていればというが、それは結果論ってやつでWindowsは
最先端OSだったからからこそ、当時存在していた最先端の仕様を
採用したに過ぎない。