>>610
んー。同じことだと思いますよ。

結局システムレベルの標準入出力をラップしてくれ、ちゃんと
変換してくれってことでしょう。

同様に、Dランタイムが特定のシステムコールなりAPIなりを
呼んでいる箇所では、ちゃんとエンコーディング変換を一貫して
行わないと、ユーザ側につけがまわることになります。

ユーザ側でtoMBSz()をかませば良い、と思われるかもしれませんが、現状の
toMBSz()は(機能的にはWin32に限らず必要なものであるにも関わらず)
Win32ベッタリの仕様であり、コードの移植性を保持するのが困難に
なりますし、いかにも「一時しのぎ」的で、今後のバージョンでは
それが不要になり、コードが新しいバージョンでは動かなくなる可能性も
大です。

char[]で受け取る関数にtoMBSz()で変換したホストエンコーディングの
バイト列を渡すことにも問題があります。char[]をUTF-8文字列と定めている
Dの仕様に反することですし、
例えばその関数の中で文字列を解析した上でシステムコールを呼んでいる
かも知れません。実際に文字列の中身を見ている関数に、
UTF-8以外のエンコーディングの文字列を与えることは、明らかな
問題を引き起こします。

ガタガタなコアライブラリの上に何かを積み上げようとしても、砂上の楼閣に
過ぎません。土台が駄目ではどうしようもないのです。