質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

1回答

13048閲覧

vscodeのターミナルで起こる文字化けを解消したい

aoba_

総合スコア3

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

2グッド

2クリップ

投稿2019/08/16 13:50

編集2019/08/19 03:01

コンパイルしたファイルを実行すると、printfを用いて日本語を出力しようとした部分がターミナルで文字化けしてしまいます。(写真のあみだくじの上下の部分です。)
イメージ説明

どのとうにすれば文字化けが解消されるのでしょうか。
###該当部分のコード

void main() { char c[128]; int N; printf("\nあみだくじ(AA)\n"); INIbuf(); /*領域設定*/ DISP(); /*画面表示*/ while(1) { printf("\n番号を入力してください(1~%dで終了):",LMAX); fflush(stdout); gets(c); N=atoi(c); /*番号入力*/ if (N<1 || N>LMAX ) break; /*範囲外*/ KUJI(N); /*くじをなぞる*/ DISP(); /*画面表示*/ } }

試したこと

settings.jsonにて
"files.autoGuessEncoding": true
"terminal.integrated.shellArgs.windows": [
"-NoExit",
"chcp",
"65001"
]
を追加しましたが改善されませんでした。

※追記
UTF-8からShift JISに変更したところ、コードの日本語も文字化けしてしまいました。
イメージ説明
イメージ説明

初歩的な質問で大変恐縮ですが、ご教授いただければと思います。よろしくお願いいたします。

ro_rentu👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keicha_hrs

2019/08/16 14:29

VSCodeのウィンドウ右下にある文字エンコードで、Shift JISを指定する方法は採れないのでしょうか。
aoba_

2019/08/17 08:08

ご助言ありがとうございます。ためしてみたのですが、コードの日本語、実行後の日本語がともに文字化けしてしまいました…。
keicha_hrs

2019/08/18 07:36

文字コードの部分をクリックすると、「エンコード付きで再度開く」「エンコード付きで保存」という選択肢が出てきたと思うのですが、前者を選ぶと「現在のファイル内容は変更せず指定した文字コードで開く」動作になりますので、日本語文字がUTF-8で記録されているファイルに対してこの操作を行うと文字化けします。多分、その状態になっているのではないでしょうか。一度ファイルを閉じてもう一度開けば、再びUTF-8で開かれませんか?
aoba_

2019/08/18 14:27

コードの文字化けの原因は理解できました。ありがとうございます。 やはり実行後の文字化けを解消する方法はないのでしょうか。
aoba_

2019/08/18 14:29

コードの文字化けの原因は理解できました。ありがとうございます。 やはり実行後の文字化けを解消する方法はないのでしょうか?
querykuma

2019/08/18 14:56

vscodeのターミナルで1: cmd と 2: powershellを選べるようになっていますがどちらになっていますか? 右下にある文字エンコードで、Shift JISを押し、ターミナルでchcp 932をコマンド実行してから実行すると文字化けしますか? 右下にある文字エンコードで、UTF-8を押し、ターミナルでchcp 65001をコマンド実行してから実行すると文字化けしますか?
aoba_

2019/08/18 15:20

powershellになっています。chcp 65001を実行しようとすると追記した画像のようになってしまいました。どう対処すれば良いでしょうか?
querykuma

2019/08/18 15:30

PS C:\> cd \windows\system32 PS C:\windows\system32> ./chcp これをやってみてください。 あなたのOSと違っていてコマンドchcpの場所が違うかもしれませんが。
aoba_

2019/08/19 03:00

PS C:\> cd \windows\system32 PS C:\windows\system32> ./chcp を実行はできたのですが、chcp 65001を実行しようとするとまた新しく追記した画像のようになってしまいます…。何度も質問してしまい申し訳ありません。
querykuma

2019/08/19 10:54

> "get-help about_Command_Precedence"と入力してヘルプを参照してください。 PS C:\> get-help about_Command_Precedence get-help : Get-Help could not find about_Command_Precedence in a help file in this session. こちらでは実行できませんでした。 あなたの環境でヘルプを参照して解決策がないか調べてみてください。 > ".\chcp"と入力してください。 ".\chcp 65001"あるいは"C:\windows\system32\chcp 65001"とコマンド入力してみてください。 エスパーするとPATHを通してないと思います(環境変数PATHにC:\Windows\system32が入っていない)。 "$env:PATH.split(';')"をコマンド入力してみてください。
querykuma

2019/08/19 11:01

こちらの質問はVisual Studio Codeの質問です。 Visual Studio Codeのタグを追加してそちらで回答してもらってください。 vscodeのタグがないと運営に問い合わせてしまいました(笑) https://teratail.com/tags/Visual+Studio+Code
aoba_

2019/08/20 13:46

わざわざありがとうございます。提案したいただいたことを一つずつ試してみます…。ありがとうございました。
guest

回答1

0

ターミナルがShift JIS(CP932)になったまま、文字化けせずに実行できるようにするならば、ソースコード上で日本語文字が文字化けせずに表示されている状態でウィンドウ右下の文字コードの部分をクリックし、「エンコード付きで保存」を選んでから「Japanese (Shift JIS)」を選択すれば、日本語文字が化けることなくShift JISで保存できるはずです。

そうして保存した後に実行すれば、ターミナルの文字コードがCP932のままでも文字化けせずに実行できるのではないでしょうか。

また、settings.jsonに

json

1 "files.encoding": "shiftjis"

を1行加えることで起動時の文字コードがShift JISになります。ターミナルの文字コードの変更に悩むよりは、こちらの方が手っ取り早いのではないかと思います。

ただし、chcpコマンドが効かないことについてはこれとは別件でしょう。恐らく環境変数PATHの設定がおかしくなっているものと思いますが、それはこれとは別の話題になるでしょう。

投稿2019/08/20 22:47

keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問