ものがたり(旧)

atsushieno.hatenablog.com に続く

日本語エンコーディング

ええと、monoのサポートは非常にヨワヨワです。日本語エンコーディングまわりがイケてないことに気づいたのは1.0リリース直前で手の出しようが無く、そして最近まで忘れてました(ばく 僕は全然使わないので…。日本語処理まわりが弱いよー、という話は、僕ができる範囲では声を大にしてw説明してきたつもりですが…

で、以下サマリーですが

という状態です。誰かやってくれないかなぁ…

ちなみにUnicode (utf-8/utf-16)は、System.Text.Encodingとしては問題なく使えるはずです。

で、各論。(1)shift_jisサポートがダメダメなのは、ひとつにはこれらがPortable.NETのコードをベースにしていて、けっこうやっつけな部分があるということ。PNETは日本人参加者がゼロで、日本語エンコーディングにはunicodeコンソーシアムが提供している変換マッピングでは使い物にならないとか、その辺のことをあまり知らずに*1使っていたりするので、shift_jisの互換性はあまりよくありません。僕が1.0リリース直前に気づいて直した部分がちょっとはありますが、焼け石に水です。それと(2)非Windows環境におけるshift_jisの扱いってかなり微妙ですというか分かりません。たとえばUnix環境上で動作しているMySQLPostgreSQLと接続するときに、MS932でもいいものなんでしょうか。SJISを使う.NETアプリケーションをそのままLinuxに持って行って、何の問題もなく動くことが期待できるとは、ちょっと思えません。

euc-jpは、monoに存在していないことに気づいたときに、僕が何日かで形だけやっつけたものなので、品質はきわめて悪いです。

ていうか昔書いてました

実際この辺も直したいとは思っていて、Miguelに「collationもそうだけど、エンコーディングまわりも改善の余地があるよね」と話してたりしたんですが。I18Nフレームワーク部分以外では99.9*%日本人にしか利益が無い部分ですし…

*1:まあ僕も調べるまでは知らなかったわけですが