• ベストアンサー

コマンドプロンプト プログラム実行時の文字化け

コマンドプロンプト上で、UTF-8のexeファイルを実行してみたのですが、文字化けしてしまいます。 コマンドプロンプトの設定で、フォントを「MSゴシック」には変更しました。 後、「chcp 65001」も実行しています。 typeコマンドでUTF-8のテキストファイルの中身を見た場合は文字化けが起こりません。 以下、環境を書いておきます。 OS: Windows 7 Home Premium 32bit コンパイラ: MinGW gcc 4.6.2 文字コードをUTF-8にしたままでOKな改善策があれば、ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • luka3
  • ベストアンサー率74% (299/401)
回答No.2

手元にある MinGW 4.5.0 で試してみました。(Win7 Pro 64bit下) printf("秒\n"); するだけのソースをUTF-8で保存し、引数なしでコンパイルしました。 ・何もしていないコマンドプロンプトでの結果 遘・ ・フォントをMSゴシック、chcp 65001実行後の結果 秒 plot02さんの出力も「遘・」ですので、プログラムは問題ないのではないでしょうか。 試しにリダイレクトで出力結果を拾ってみてはどうですか(test.exe >output.txt) chcp前でもUTF-8形式で「秒」を確認できました。 chcpのトラブルのようですが、あまり情報がないですね。 こちらはどうでしょうか。 ・教えて!Ziddyちゃん - UTF-8を表示できるWindows環境下のコンソール http://ziddy.japan.zdnet.com/qa5051484.html

plot02
質問者

お礼

回答ありがとうございます。 こちらでも、printfを使うと文字化けが起こらなかったです。 それに対し、coutを使うと文字化け……。 なお、リダイレクトで出力結果を見た場合は、両方の場合とも、普通に読めました。 教えていただいた質問の方ですが、regeditを使う方法は効果なしでした。 後はcygwin + TeraTermという解決策しかなさそうですかね? そうなると現状のままでいいかな、という心情です。printfを使えば問題ないので。

その他の回答 (4)

  • luka3
  • ベストアンサー率74% (299/401)
回答No.5

wcout自体は先ほど試していたのですが、ロケールの指定はやっていませんでしたので試してみました。 locale loc(""); cout.imbue(loc); wcout.imbue(loc); cout << "秒1" <<endl; wcout << L"秒2" <<endl; 結果は、wcoutの方からは何も出力されませんでした。 (coutはNo.1のお礼にあるのと同じ文字化け) localeに「ja_JP.UTF-8」や「japanese」を入れたら実行時エラーになりました。

plot02
質問者

お礼

回答ありがとうございます。 こちらも同じような結果です。 それで、localeに「ja_JP.UTF-8」を入れた時に出る実行時エラーのwhat()を検索してみましたが、どうやらcoutの問題ではなく、libstdc++の方の問題みたいです。 http://d.hatena.ne.jp/eagletmt/20090208/1234086332 なので、C++でlocale設定を使うのは、とりあえず諦めることにします。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.4

>こちらでも、printfを使うと文字化けが起こらなかったです。 >それに対し、coutを使うと文字化け……。 試したワケではありませんが…… 「cout ロケール」で検索してみたら下記のようなページが。 http://www.kijineko.co.jp/tech/cppsamples/stdout.html 使えるか判りませんが、wcoutではどうなのでしょう??

plot02
質問者

お礼

回答ありがとうございます。 軽く調べた感じ、gccだと、C++のロケール設定ができないみたいです。 多分Visual C++の方だと成功するのかもしれません。 実装の問題みたいなので、難しいですね。

  • luka3
  • ベストアンサー率74% (299/401)
回答No.3

c++にて試したところ、こちらでも同じ症状となりました。 簡単に思いつくことは試しましたが解決できず、原因もわかりません。 printfを使うことで回避可能であればそれが一番いいと思います。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

具体的に「どういうプログラムを」「どう実行したときに」「どう文字化けするのか」はわかりませんか?

plot02
質問者

お礼

回答ありがとうございます。 プログラムは、累乗計算を行なって、処理時間を文字で表示するものです。 MinGWのg++で、UTF-8エンコード(CRLF)のソースファイルを、とくにオプションを付けずにコンパイルしました。 gccのデフォルトがUTF-8みたいなので、UTF-8にはなっていると思うのですが…。 実行時は、CP932のときは「秒」が「遘・」と文字化けします。 CP65001のときは「秒」(コピー&ペースト)という3文字になります。 (表示は「γ」「『○』の下に『_』」「『f』と『E』の合字みたいな文字」) なお「-finput-charset=UTF-8」, 「-fexec-charset=UTF-8」をオプションを付けても変化なしです。

関連するQ&A

  • コマンドプロンプトでUTF-8が文字化けします

    Windows8.1proを使用してます。 コマンドプロンプトで chcp 65001でUTF-8にしてます。 日本語を入力したテキストファイルを UTF-8 で保存し、typeコマンドで表示すると文字化けします。 コマンドプロンプトのフォントはラスターフォントを選択してます。 レジストリを修正してMSゴシックをフォントに追加しようとしましたが、追加出来ませんでした。 何かアドバイスがありましたらご教示お願い致します。 宜しくお願い致します。

  • コマンドプロンプトの文字化け

    コマンドプロンプトで文字化けします。 「dir」などのコマンドを打ってみたところ、英語のフォルダ名は表示されるのですが、日本語のフォルダ名が「□□□」となり文字化けしています。 文字化けしているところをコピーし、メモ帳に貼り付けたところ、日本語のフォルダ名もきちんと表示されます。 jp[Enter]を行っても、やはり変わりがありません。 「規定値」-> コードページを確認したところろ、「932(ANSI/OEM - 日本語 Shift-JIS)」となっています。 chcpコマンドを使い、文字コードをutf-8にしても変わりませんでした。 PC環境は、Windows 7 Professional 32bitとなっております。 どうすれば日本語を表示できるか教えていただけますでしょうか。

  • MySQLコマンドプロンプトからのデータ入力

    MySQL勉強中です。Windows7のコマンドプロンプトでデーターを入力したいのですが、日本文字がエラーになります。 コマンドプロンプトの文字コードがシフトJISになっているので、chcp65001でutf-8にコード変換しました。しかし、日本文字が表示されません。 MSゴシックにフォント設定をしてから再度utf-8に変換しましたが、やはり日本語選択が出来ません。 ネットの情報によると、最初にMSゴシックに設定しないでコード変換してしまうと、次からは設定項目に表示されないとのことです。 さて、その対処法をお教え願えないでしょうか。 MySQLのバージョンは5.1です。 よろしくお願い致します。

  • Cをコマンドプロンプトから実行したい

     今晩は、Eclipse(CDT)でC言語を勉強している初心者です、宜しくお願いします。  WorkSpaceを作成して、そこに実際に作成したファイルを保存しています。  これをもし、コマンドプロンプトから動作させようとすると、どのファイルをどのように呼び出して、実行させて やればよいのでしょうか。  因みにEclipseのフォルダの中には、GNU>gcc>binというフォルダ構成?となっています。  また、GNU、gccのそれぞれの役割みたいなものはどういう意味でしょうか。  コンパイラらしきものというのはわかるのですが、色々と本を調べると、GNU、gccのどちらもコンパイラという風には 書いているのですが.........

  • コマンドプロンプトでコマンドが認識されない

    c初心者なのですが、コマンドプロンプトでコマンドがうまく実行できません。 インストールしたものは、MinGWとmsysです。 環境変数もあまりよくわかっていませんが一応設定しました。 http://www.knatech.info/Dev-mingw-install.html こちらの環境変数の設定を参考に設定しました。 そしてコマンドプロンプトでmakeをうつと make: *** No targets specified and no makefile found. Stop. となり、こちらは認識しているようですが、gccと打つと 'gcc' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 とでてしまいます。 どのようにしたらgccを認識してくれるのでしょうか。 初めてなことだらけで、質問も分かりにくいところがあるかもしれませんがよろしくお願いします。

  • プログラムを実行すると文字化けする。

    Windws98の頃に、VisualBasicで作成したプログラムを、Windows XP Professionalの、コマンドプロンプトで実行すると問題なく実行するのですが、Windows Server 2008 Standardの、コマンドプロンプトで実行すると、コマンドプロンプトの画面で漢字が文字化けしてしまいます。例えば、そのプログラムを、C:\プログラムというフォルダにおいて実行すると、コマンドプロンプトの表示が、C:\??????????>という表示なります。フォルダ名を漢字にしないと、文字化けはするのですが、プログラムは実行されます。何か設定で解決することは出来るのでしょうか。それとも、プログラムを作成し直した方が良いのでしょうか。

  • コマンドプロンプトにおけるencoding変換

    windowsXPで コマンドプロンプトのencodingを変換する場合、chcp 65001で utf_8に変換できるということで、実際にやってみました。ですが、日本語の文字がどうしても受け付けられません。どうしたらutf_8に変換した状態で、 コマンドプロンプト上で 日本語をタイプできるのか、どなたかお教えいただければ有難いです。

  • コマンドプロンプトの文字化け

    OS:Win2000 現在、サーバ(Linux)へTelnetでLoginし、サーバの設定を行っています。 その際、コマンドプロンプトを使用しているのですが、日本語が文字化けしてしまいます。 文字化けしないようになりませんか? また、文字化けしないようなソフトはありませんか? コマンドプロンプトから選べるコードページは932と437だけです。

  • コマンドプロンプト実行での文字コード

    Eclipseを使いUTF-8で作成したJARファイルをWindowsのコマンドプロンプトから起動するとShift-JISに勝手にエンコードされます。 強制的にUTF-8にできませんか? Eclipseで実行すると正常です。

    • ベストアンサー
    • Java
  • コマンドプロンプトの実行

    こんにちは 先日Ipconfigを教えていただきまして、コマンドプロンプトから実行しています。 手順としては 1.コマンドプロンプトを起動する 2.Ipconfigをパラメータつきで実行 3.Ipconfigを別パラメータつきで実行 4.コマンドプロンプトを終了 となります。 これを予めコマンドプロンプトで実行させたい内容を書き込んだファイルを作っておき、 そのファイルをデスクトップ上とかに置き、クリック実行してコマンドプロンプトの処理を実行させる、ということができないでしょうか。 以上、よろしくお願いいたします。

専門家に質問してみよう