locale の対応状況調査(その1)

id:logion:20041222#p1 や id:logion:20051128#p1 でも書いたようにすげー心待ちにしていていた C++Builder2006J ですが、昨年末にバージョンアップ版が届きました。年明けの Update1 も当てて移行の準備も万端なはず…なのですが、ちょっと気になる点があってまだ移行していませんでした。

それは、C++Builder6J の頃から気になっていた文字列の処理についてです。
パスやファイル名を操作する自作ライブラリにおいて、、それまでは std::string (char) を使っていて、日本語ファイル名の事については(自分自身が使わないという理由で)特に気にしていませんでした。しかし、id:logion:20050706#p1 や id:logion:20050912 のような事態に遭遇してからはUnicode を使うように宗旨変えし、std::wstring (wchar_t) に書き変えていました。

この Unicode 版の自作ライブラリを C++Builder2006 でコンパイルした所、問題が発生しました。id:logion:20050912 のように std::locale を使うコードは、(C++Builder6J では問題なく動いていましたが) C++Builder2006 ではlocale の生成時に例外が飛んでくるようになっていたのです。

どうも locale 名の "ja_JP.sjis" がマズいらしいのですが、正しい locale 名というものを知りません。試行錯誤でとりあえず "japanese" ではちゃんと生成できていましたが…。
ということで、調べてみました。(長いのでいったん切ります)