●文字コードの変換●



仕様が何処かで食い違ってしまったようで、日本語をUTF8形式で保存したものを、 S-JIS形式で表示させる事になってしまった・・・ と云う訳で、なんとかした時のプログラム(一部抜粋)が以下のもの。 UTF8形式を直接S-JIS形式に変換する方法が解らず、UTF8形式を一度UNICODE形式に変換してから、 S-JIS形式に再度変換すると云う、面倒な手順になってしまった。




  char strutf8[128]; // UTF-8形式コード格納バッファ
  memset(strutf8,0x00,sizeof(strutf8));
  // UTF8形式のデータを読み込み。
  memcpy(strutf8,ctleld.mToolBody.mManufacturer,
     sizeof(ctleld.mToolBody.mManufacturer));

  char struni[256]; // UNICODE形式コード格納バッファ
  memset(struni,0x00,sizeof(struni));
  char strsjis[128]; // S-JIS形式コード格納バッファ
  memset(strsjis,0x00,sizeof(strsjis));

  // S-JIC -> UNICODEの変換
  ::MultiByteToWideChar(CP_UTF8,0,
             strutf8,-1,
             (unsigned short *struni,sizeof(struni));

  ::WideCharToMultiByte(CP_ACP,0,
             (const unsigned short *)struni,-1,
             strsjis,sizeof(strsjis),
             NULL,NULL); // UNICODE -> UTF-8の変換



TOP知恵袋VC++の小細工