none
widechartomultibyteで文字化けしてしまいます。 RRS feed

  • 質問

  • 現在文字コードがshift-jisのiniファイルをWIN32APIのMultiByteToWideCharとWideCharToMultiByte

    で読み込むソースコードを作成しているのですが日本語の箇所が文字化けしてしまいます。

    現在ソースコードが手元にないのですが,

    fileopen_s(*fp"sample.ini","w, ccs = utf-8");といった形でiniファイルを出力し、

    MultiByteToWideCharでshift-jis->Unicodeに変換し、

    WideCharToMultiByteでUnicode->utf-8に変換を行い、他のファイルに出力を行っております。

    ソースのない中で質問してしまい、申し訳ないですが

    お力をお貸しいただける方がおりましたらよろしく

    お願いします。


    2017年8月8日 15:35

すべての返信

  • fopen_s()で指定するccsはUnicodeサポート機能ですが、UTF-8を指定するということは対象のファイルがUTF-8でエンコードされているものとして解釈されます。質問文によると対象のファイルは本来Shift-JISとのことですから、指定内容が間違っています。
    2017年8月8日 19:49
  • 質問内容に情報が足りなさすぎて誰も答えられないと考えられます。
    思いつくままあげると、

    1.標準のライブラリにfileopen_s()という関数は見当たりません。
      正確な関数名称を示してはどうでしょう。
     独自実装している場合は、その内容が必要になるかもしれません。
    2.fileopen_s()の行は書き込み側の様ですが、
     バイナリではなくテキストとしてオープンする場合は読み取り側のコードも重要な判断材料になりえます。
    3.MultiByteToWideChar()、WideCharToMultiByte()とも、引数により動作が異なります。
     それが明示されないと何も判断できません。


    2017年8月9日 1:28