過去にマルチバイトベースで作ったWindowsアプリケーションをUNICODE対応にしようと思い、小さなプログラムを作って実験してみたのですが、マルチバイトで保存されたファイルを開いてmbstowcs関数を使ってUNICODEにするところで大いにつまづいてしまいました(VS2005 C++)。
散々試行錯誤して、結果わかったのが、次の1行を直前に挿入すればよい。ということ。
setlocale(LC_ALL, "");
ああ。。なんという簡単な解決方法。これだけのことなのに、ネットで情報を探してもなかなか見つからずに苦労しました。あるところにsetlocale(LC_ALL, "ja")とすればよい、という記述があって(でも、これだとうまくいかない)、だいぶ翻弄されました。
最近のJSPの授業の中で、Webアプリケーションを作るときにはDBの文字コード、アプリケーションでの処理、FORMから渡される文字のコードなど、十分気をつけないと文字化けが起きるよ、というような話をしたばかりですが、ローカルなプログラムでもやっぱり文字化けには悩まされるものだと思ったのでした。