No.7ベストアンサー
- 回答日時:
makeが各言語で表示されるしくみは、これ。
うろ覚えですが、MinGWでは、jaに対応している make.mo は、 ja_JP.EUC 用しかなかったように思います。
端末がSJISでは文字化けします。
たしか、他のコマンドも .moはEUC用だったはずです。
対策は次の通りです。
○ 日本語表示を止める
・LANG=C 等、日本語表示しない設定にする
・LANG=ja_JP.SJIS 等、コードも含めて設定する→SJISにすれば、EUCは使われない
・locale/ja/LC_MESSAGES/make.mo を削除する
○EUC使用で統一する
・chcpコマンドでコマンドプロンプトのコードをEUCに変える(他にどんな影響が出るか不明)
・cmd.exeではなく、(MinGW/MSYSの) bashを使う
○ja_JP.SJIS用 make.mo を作る
・ locale/ja/LC_MESSAGES/make.mo と差し替える
・ locale/ja_JP.SJIS/LC_MESSAGES/make.mo に置く
影響が少ないのは、環境変数LANGを変更することでしょう。
有難う御座います。
コマンドラインから、:let $LANG="ja_JP.SJIS"
と設定しましたが、結果はNG。
再度、別の:let $LANG="C"とした所、正常になりました。
ここで、ja_JP.SJISの設定をしても結果がNGになった
原因は何なのだろうか。
取り敢えずはこれで行けそうですが。
尚、文字化けをしているのはmakeだけでgccは一切の
文字化けは有りません。
No.6
- 回答日時:
ご教示頂いた通り gvim の表示・編集用の文字コードは :set enc=utf-8 で UTF-8 に設定されていると思いますが、ご提案させて頂いたのは、ターミナルの文字コードの設定である :set tenc=utf-8 です。
enc ではなく tenc です。 (tenc = termencoding)あまり自身がないのですが、tenc はデフォルトで未設定なので、一度設定されることをおススメします。
有難う御座います。
_vimrcには下記の様に設定をしています。
これに付いては、順番と言うのが有るのでしょうか。
これをやっても改善されません。
他にも何か問題は有りそうです。
set termencoding=cp932
set enc=utf-8
No.5
- 回答日時:
ふむ, 現状は
GVIM とコマンドプロンプト上では make の出力が日本語EUC になっている
ということか.
環境変数を適切に設定すればいいような気がするけどなぁ.... 原因になりそうな奴は #3 に挙げているから, まずはそいつらを適切にいじってみることを勧める.
有難う御座います。
$LANGと言うのが何か関係をしているのでしょうか。
現在のこの値は、jaとなっています。
これが文字化けに起因をしますか。
No.4
- 回答日時:
コマンド・プロンプトで make が文字化けするのは make が出力する文字コードが UTF-8 でコマンド・プロンプトが認識する文字コードは SJIS だからですね。
gvim から make を起動する状況とのことですが、
gvim 自身が識別す文字コードは :set enc などで変更可能ですが、make は gvim から起動されるので gvim 設定した文字コードとは別のものになります。
あまり自身がないのですが、
:set tenc=utf-8
で、改善されないでしょうか。
有難う御座います。
現在の_vimrcの設定で、set enc=utf-8を設定していて
エンコーディングは、utf-8になっています。
gvimでのコマンドプロンプト呼び出しでの文字化けは、
コマンドプロンプトが想定をしているのがcp932で
gvimが出力をしているのがutf-8と言う事で、
多分にこれが文字化けの原因だとは思いますが。
問題なのは、これがgvimのウインドウの中での文字化け
です。何とかならんのでしょうか。
gvimのコマンドラインから、直接に:makeを実行させると
gvimのコマンドラインの出力が文字化けと成る所です。
No.3
- 回答日時:
まず手元では試しようがないことを断っておく.
でその 2つのスクリーンショットを見ると, xyzzy の上では make が英語で出力しているのに対し, GVIM上では違う言語 (日本語?) で出力していることがわかる. そこから推測されるのは
出力言語に関係する環境変数の値が異なっている
という可能性だ. 候補はいくつもあるけど LANG, LANGUAGE, LC_ALL あるいは LC_xxx と総称される環境変数のうち 1つあるいは複数の値が異なっていると想定される. もちろん何がどう違うのかはわからんので見つけ方などは自分で調べてくれ. で xyzzy と同じになるように GVIM を設定すれば解決する可能性がある.
次に GVIM の「文字化け」についてだが, これは「GVIM が期待する文字コードと make が出力に使っている文字コードが違っている」ことが理由として想定される. これも環境変数の値の問題だろうと考えられる.
ところで「windows7のvimでも、コマンドプロンプトでも文字化けします」のところで「コマンドプロンプトでも文字化けします」が木になるのだが, これは
単純にコマンドプロンプトから make を実行するときにも文字化けする
ということでいいのかな? もしそうなら (GVIM と同じことだけど) make が出力に使う文字コードとコマンドプロンプトが期待する文字コードが違うことに起因するじゃないかなぁ.
有難う御座います。
先程のコマンドプロンプトからのmakeで文字化けと言うのは、
正確には、今気が付きましたが。gvimから:shでコマンドプロンプト
を呼び出した時のmakeで文字化けをします。
gvim経由で無い単独のコマンドプロンプトでのmakeでは例えcp932
で有ったとしてi文字化けは出ません。
これは、単純にgvimでの呼び出しでgvimが使っているutf-8で
コマンドプロンプトで出力をしようとしての文字化けだと思います。
No.1
- 回答日時:
(文字化けする状況が書かれていないので、よくわかりませんが)
mingw の makeは GNU make ですが、この make に設定などはありません。
(コマンドライン・オプションでも、文字コードに対するものはないと思います)
基本的に、make そのものは ASCIIコードしか扱えないので、Makefile に日本語などが記述されているとうまく動作しない可能性があります。
また、MSYSのツール類(make含む)は、表示コードをUTF-8を前提にしているので、それに起因して文字化けすることがあります。 (SJIS ↔ UTF-8)
make を実行する環境(minttyやコマンド・プロンプト)によっては表示コードがSJISのことがあります。
文字化けする状況・環境(MSYSだけか、Cygwinを使用しているか、出力結果など)をご提示頂ければ、解決できるかもしれません。
有難う御座います。
Windows7でmakefileは下記です。
01.exe:01.c
gcc -o 01.exe 01.c
01.c makefile共にutf-8で書いています。
gccの出力は正常です。makeの出力のみ文字化けする。
DOSの画面からmakeを実行しても文字化けをする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) Makefileが実行できない 2 2022/07/28 23:49
- 英語 to make about 3 2022/10/30 14:17
- TOEFL・TOEIC・英語検定 to make about 1 2022/10/25 13:06
- 英語 「再び」の接頭辞”re-"を有する単語と文末に"again"を付けた表現のニュアンスに違いについて 1 2022/12/13 12:40
- 英語 提示文の構造について 3 2022/06/27 18:03
- 英語 第5文型及び第4文型で同じ動詞が反復する場合のその動詞の省略の可否について 7 2022/09/27 11:02
- 英語 英文の構造 3 2022/06/21 05:36
- 英語 to不定詞は、to不定詞を目的語にできますか? 1 2022/05/11 14:36
- 英語 make it 3 2022/06/06 12:37
- 英語 ①普通名詞の所有格+②普通名詞で、①普通名詞に定冠詞の意味を付加したい場合の表現方法等について 23 2022/09/30 12:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
ListViewの複数選択について
-
アクセスでエクセルに出力する...
-
プログラムについての質問です...
-
MMDでavi出力が出来ない
-
コンセントの電力は入力と出力...
-
ACCESSからExcelへエクスポート...
-
ACCESS クエリ→フォーム...
-
printfとputcharの違いは
-
cout と cerrの違い
-
アクセスで教えてください。 レ...
-
発電機の出力について
-
VBAのExecメソッドで画面を非表...
-
【UWSC】WEBページ中の特定文字...
-
スマホのバッテリー消費につい...
-
CRC16計算について
-
サイコロの出る目の確立をプロ...
-
wsprintfで浮動小数を扱うには?
-
C#について質問【足し算】
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
printfとputcharの違いは
-
cout と cerrの違い
-
COBOLのMOVEで桁数が異なる場合
-
テキストファイルから特定の文...
-
MMDでavi出力が出来ない
-
コンセントの電力は入力と出力...
-
アクセスでエクセルに出力する...
-
OBS配信すると、マイクが途切れ...
-
coutで出力した文字を消去する...
-
CRC16計算について
-
VBA レジストリの値の読み方に...
-
ACCESS クエリ→フォーム...
-
printfの書式%.*s
-
VBAで有効数字の設定
-
VBAでテキスト出力時のスペース...
-
VBAのExecメソッドで画面を非表...
-
makeで文字化けする。migwのmak...
おすすめ情報
windows7のvimでも、コマンドプロンプトでも文字化けします。
xyzzyのemacs系ですが、これでは文字化けは出ません。
何が何なのか、良く分かりませんが。環境を変えれば文字化けが
出ないと言う事は、makeその物には原因は無い様です。
然し、コマンドプロンプトで文字化けが出るのは解せないですが。
コンパイルは、xyzzyで編集はvimと言うのも有り得ますが。余り
この方法はやりたくは無いですが。
助けて下さい。
文字化けのイメージです。
xyzzyでmakeが文字化けを起こさない場合を示します。
コマンドプロンプトで文字化けをした例です。
let $LANG="C"の設定でOKになっています。
有難う御座います。