none
Win32アプリケーションが文字化けします RRS feed

  • 質問

  •  

    実行したアプリケーションのひらがな/漢字の部分だけ黒い長方形となって表示されません。

    ツール→オプション→フォントおよび色を、規定値にもどしても直りませんでした。

    どうすれば表示できるようになるのか教えてください。

    使っているのはMicrosoft Visual Studio 9.0です。

    2008年9月20日 1:15

回答

  • どーも、PATIOです。

     

    Microsoft Visual Studio 9.0だとわかりにくいのでMicrosoft Visual Studio 2008と書いた方が良いと思います。

    こちらの方が多分わかりやすいです。(Miscrosoftが公表している名称の方が通りが良いと言う話です)

     

    作成したアプリの話のようなのでツールの所でいじっても変わらないと思います。

    それともIDEのアウトプットウインドウの中の表示の事なんでしょうか?

    それなら、そこまで書かないとわからないと思いますよ。

     

    アプリのウインドウ上の文字の話なら

    VisualStudio2005以降、プロジェクトの文字コードの既定値がUNICODEになっています。

    なので、プロジェクトの設定の所で文字コードの設定を確認してみてください。

     

    プロジェクトのプロパティで構成プロパティの全般という所を見ます。

    文字セットと言う項目があるはずですのでそこを確認してみてください。

    そこがマルチバイト文字セットになっていれば、ShiftJISが使えます。

    もし、Unicodeになっていたら変更してみてください。

    この部分で解決できないなら他の所に原因があるかもしれません。

     

    2008年9月22日 2:30
  •  唯倉 さんからの引用

    文字セットはマルチバイト文字セットにしていました。

    ShiftJISを使うように設定するには、どのようにすればいいですか?

    マルチバイト文字セットが、日本語環境においてはShiftJISを使う文字セットと言えます。

     

    ところで、実行OSとか、フォントとか書かれていませんが、今どのような状態なのでしょうか?

    新しく作ったプロジェクトでも発生するのか、特定のプロジェクトでのみ発生するのか、はたまた新しく作り直して同じようなやり方で作り上げても発生するのか?

    もう少し、なぜ、そうなったのか、原因を特定するために、情報を書き出してみて下さい。

    また、試した結果とかも教えて頂けると、アドバイスを得やすいと思います。

    2008年9月22日 14:23
    モデレータ
  • だめもとで、フォントキャッシュ(Windows\System32\fntcache.dat)

    を削除、再起動してみてはどうでしょう。

    2008年9月25日 6:20
  • MSゴシック&MS Pゴシック(True Type).ttc は、多分間違いだと思います。

    このフォント回りのレジストリ破損を修復してみるのは如何でしょうか?

     

    以前、

     

    また、別のPCで試したところ正常に表示されました。

     

    と書かれていらっしゃいますから、比較可能なWindowsXP(?) PCが存在するものと推測いたしました。ですから、

    • 正しく動作するPCの該当するレジストリをレジストリエディタでエクスポートして、正しく動作しないPCのレジストリを変更する(に結合する)
    • 正しく動作するPCの該当するレジストリを印刷して、正しく動作しないPCでレジストリエディタを動かして1つずつ修正する
    • ...

    など、という作業になると思います。

     

    2008年9月30日 4:40

すべての返信

  • どーも、PATIOです。

     

    Microsoft Visual Studio 9.0だとわかりにくいのでMicrosoft Visual Studio 2008と書いた方が良いと思います。

    こちらの方が多分わかりやすいです。(Miscrosoftが公表している名称の方が通りが良いと言う話です)

     

    作成したアプリの話のようなのでツールの所でいじっても変わらないと思います。

    それともIDEのアウトプットウインドウの中の表示の事なんでしょうか?

    それなら、そこまで書かないとわからないと思いますよ。

     

    アプリのウインドウ上の文字の話なら

    VisualStudio2005以降、プロジェクトの文字コードの既定値がUNICODEになっています。

    なので、プロジェクトの設定の所で文字コードの設定を確認してみてください。

     

    プロジェクトのプロパティで構成プロパティの全般という所を見ます。

    文字セットと言う項目があるはずですのでそこを確認してみてください。

    そこがマルチバイト文字セットになっていれば、ShiftJISが使えます。

    もし、Unicodeになっていたら変更してみてください。

    この部分で解決できないなら他の所に原因があるかもしれません。

     

    2008年9月22日 2:30
  • 色々ご指摘いただいて、ありがとうございます。

    文字セットはマルチバイト文字セットにしていました。

    ShiftJISを使うように設定するには、どのようにすればいいですか?

    2008年9月22日 7:46
  •  唯倉 さんからの引用

    文字セットはマルチバイト文字セットにしていました。

    ShiftJISを使うように設定するには、どのようにすればいいですか?

    マルチバイト文字セットが、日本語環境においてはShiftJISを使う文字セットと言えます。

     

    ところで、実行OSとか、フォントとか書かれていませんが、今どのような状態なのでしょうか?

    新しく作ったプロジェクトでも発生するのか、特定のプロジェクトでのみ発生するのか、はたまた新しく作り直して同じようなやり方で作り上げても発生するのか?

    もう少し、なぜ、そうなったのか、原因を特定するために、情報を書き出してみて下さい。

    また、試した結果とかも教えて頂けると、アドバイスを得やすいと思います。

    2008年9月22日 14:23
    モデレータ
  • OSはWindows XPです。フォントはMSゴシックだと思います。

    文字化けはすべてのプロジェクトで起こり、何度作り直しても起こります。
    また、別のPCで試したところ正常に表示されました。

    原因はC:\WINDOWS\Fontsに保存されているMSゴシックのファイルを一度消してしまってから
    文字化けが起こるようになったので、これだと思います。

    その後、入れなおしてみたのですが元に戻りませんでした。

     

    すいません、いろいろ説明不足でした。アドバイスをお願いします。

    2008年9月22日 16:18
  • だめもとで、フォントキャッシュ(Windows\System32\fntcache.dat)

    を削除、再起動してみてはどうでしょう。

    2008年9月25日 6:20
  • 駄目でした・・・

    2008年9月25日 7:38
  • 以下のレジストリの中身はどうなっているでしょうか?

     

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

     

    2008年9月25日 9:36
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper

    @MS Pゴシック  @MS P明朝  @MS ゴシック  @MS 明朝 ARIAL COURIER COURIER NEW  DEFAULT

    FIXEDSYS  MS Pゴシック MS P明朝 MS SAANS SERIF  MS SERIF   MS ゴシック MS 明朝 SMALL FONTS

    SYMBOL SYMBOL1 WINGDINGS WINGDINGS2

     

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes

    @MS Shell Dlg @標準ゴシック @標準明朝 Arial Baltic,186  Arial CE,238  Arial CYR,204  Arial Greek,161

    Arial TUR,162   Courier New Baltic,186  Courier New CE,238  Courier New Arial CYR,204   Courier New Arial Greek,161

    Courier New TUR,162   Helv  Helvetica  MS Shell Dlg  MS Shell Dlg 2   Times  Times New Roman Baltic,186 

    Times New Roman CE,238   Times  Times New  CYR,204   Times New Roman  Greek,161 

    Times New Roman TUR,162    Tms Rmn  クーリエ  ゴシック ゴシック タイムズロマン ヘルベチカ 標準ゴシック 標準明朝

     

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

    中に入っているファイルが、大すぎるので必要な内容を指定してもらえないでしょうか

    2008年9月26日 6:35
  • 取り敢えず、文字化けせずに動作している WindowsXP のレジストリの値と文字化けしてしまう WindowsXP の値を比較されては如何でしょうか。

    例えば、

    • FontMapper の下の DEFAULT の値は 128 になっていて、同じように MS Pゴシックの値は 128 になっていますか?
    • Fonts の下には「MS ゴシック & MS Pゴシック & MS UI Gothic (TrueType)」や「MS Gothic & MS PGothic & MS UI Gothic (TrueType)」が存在して、msgoth04.ttc の値を持っていますか?

    これは XP Embedded の話 (しかも日本語MUIの話)ではあるのですが、

     

    http://support.microsoft.com/kb/418877/ja

     

    このあたりのキーが壊れると日本語表示はおかしくなると思われます。

    2008年9月26日 7:04
  •  

    「MS Gothic & MS PGothic & MS UI Gothic (TrueType)」の方はmsgoth04.ttc でしたが、

    「MS ゴシック & MS Pゴシック & MS UI Gothic (TrueType)」はMS ゴシック&MS Pゴシック(True Type).ttcでした

    2008年9月26日 14:20
  • MSゴシック&MS Pゴシック(True Type).ttc は、多分間違いだと思います。

    このフォント回りのレジストリ破損を修復してみるのは如何でしょうか?

     

    以前、

     

    また、別のPCで試したところ正常に表示されました。

     

    と書かれていらっしゃいますから、比較可能なWindowsXP(?) PCが存在するものと推測いたしました。ですから、

    • 正しく動作するPCの該当するレジストリをレジストリエディタでエクスポートして、正しく動作しないPCのレジストリを変更する(に結合する)
    • 正しく動作するPCの該当するレジストリを印刷して、正しく動作しないPCでレジストリエディタを動かして1つずつ修正する
    • ...

    など、という作業になると思います。

     

    2008年9月30日 4:40
  • こんにちは。中川俊輔 です。

     

    皆様、回答ありがとうございます。

     

    唯倉さん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    勝手ながら有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、是非投稿してみてください!

     

    今後ともフォーラムをよろしくお願いします。

    それでは!

    2008年10月9日 5:24