- 614 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 08:23:34 ]
- >>610
んー。同じことだと思いますよ。 結局システムレベルの標準入出力をラップしてくれ、ちゃんと 変換してくれってことでしょう。 同様に、Dランタイムが特定のシステムコールなりAPIなりを 呼んでいる箇所では、ちゃんとエンコーディング変換を一貫して 行わないと、ユーザ側につけがまわることになります。 ユーザ側でtoMBSz()をかませば良い、と思われるかもしれませんが、現状の toMBSz()は(機能的にはWin32に限らず必要なものであるにも関わらず) Win32ベッタリの仕様であり、コードの移植性を保持するのが困難に なりますし、いかにも「一時しのぎ」的で、今後のバージョンでは それが不要になり、コードが新しいバージョンでは動かなくなる可能性も 大です。 char[]で受け取る関数にtoMBSz()で変換したホストエンコーディングの バイト列を渡すことにも問題があります。char[]をUTF-8文字列と定めている Dの仕様に反することですし、 例えばその関数の中で文字列を解析した上でシステムコールを呼んでいる かも知れません。実際に文字列の中身を見ている関数に、 UTF-8以外のエンコーディングの文字列を与えることは、明らかな 問題を引き起こします。 ガタガタなコアライブラリの上に何かを積み上げようとしても、砂上の楼閣に 過ぎません。土台が駄目ではどうしようもないのです。
|

|