なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

wxWidgetsと日本語

何度も同じようなエントリを書いているが、書かずにはいれない。日本語って面倒。

#include <wx/wx.h>
#include <iostream>

int main() {

   wxString jap = wxT("あいうえお");
   std::cout << jap << std::endl;

   std::cout.setf( std::ios::hex, std::ios::basefield );// 16進数で出力させる
   std::cout.setf( std::ios::showbase );                // 0xを付ける

   for (int i=0;i < jap.Len();i++) {
      wxUniChar test(jap[i]);
      std::cout << (int)test << " ";
   }

   return 0;
}

出力結果

$ ./wxtest.exe
▒▒▒▒▒▒▒▒▒▒
0x3042 0x3044 0x3046 0x3048 0x304a

Mingw/MSYS環境ではちゃんと文字列が表示されなかった
けれどもwxWidgetsは日本語を内部でUnicodeとしても保持しているのがわかる
wxWidgets 2.8.4以降では wxString::ToUTF8()でUTF-8に変換が可能だ