Visual Studio Codeの統合ターミナルを、Windowsで使えるターミナルとシェルのまとめ - Qiitaの最後あたりにある方法で、MSYS2に付属しているbashに変更したのですが、典型的な「UTF-8
の文章」->「shift-jis
で出力」という文字化けが直せず困っています。
実行したのは以下のようなコードです。
bash
1$ cat hello.c 2#include <stdio.h> 3 4int main(void) { 5 printf("はろーわーるど\n"); 6 return 0; 7} 8$ gcc hello.c 9 10$ ./a 11縺ッ繧阪・繧上・繧九← 12 13$
環境変数LANG
は".bash_profile"にて設定値をja_JP.UTF-8
にしております。
またlocale
コマンドの実行結果は以下です。
bash
1$ locale 2LANG=ja_JP.UTF-8 3LC_CTYPE="ja_JP.UTF-8" 4LC_NUMERIC="ja_JP.UTF-8" 5LC_TIME="ja_JP.UTF-8" 6LC_COLLATE="ja_JP.UTF-8" 7LC_MONETARY="ja_JP.UTF-8" 8LC_MESSAGES="ja_JP.UTF-8" 9LC_ALL=
また、VSCodeでの文字コード指定がUTF-8
であったことと、$ ./a > hoge.txt
("hoge.txt"はあらかじめUTF-8
でメモ帳で作成したファイル)とした後に、$ cat hoge.txt
とするとちゃんと「はろーわーるど」と表示されたことより、ファイル自体には問題がないという見当がおおよそついたので、"nkf"等のコマンドはそもそも実行していません。
当然UTF-8
を使用したいので「ファイルのエンコーディングをshift-jis
にすればいい」という回答以外でお願いしたいです。(というより、おそらくですがファイルエンコーディングの問題ではないです。)
bashに問題があるのではなく、VSCodeの統合ターミナル自体に問題があるんじゃないかなと私は疑っていますが、ほかにどの設定項目を確認すればいいか思いつかないです、、実はgccが原因だったりするのでしょうか?
何かご存知のことがありましたら、何卒回答よろしくお願いします。m(_ _)m
バージョンなど
- Visual Studio Code : 1.23.1
- GNU bash : 4.4.19(2)-release (x86_64-pc-msys)
他に必要な情報があれば適宜補足しますので、修正欄で尋ねてくださると幸いです。
追記
以下、q1701様からいただいたコマンドの実行結果です。
bash
1$ file hello.c 2hello.c: C source, UTF-8 Unicode text, with CRLF line terminators 3 4$ which gcc # <- mingwのパスを通してgccを使っていました。これが原因...? 5/mingw64/bin/gcc 6 7$ gcc hello.c 8 9$ which ./a 10/home/namni/desktop/a 11 12$ ./a 13縺ッ繧阪・繧上・繧九← 14 15$ ./a > hello.txt 16 17$ file hello.txt 18hello.txt: UTF-8 Unicode text, with CRLF line terminators 19 20$ cat hello.txt 21はろーわーるど 22 23$
修正時にprintf("ハローワールド");
をprintf("ハローワールド\n");
にしたために結果に差異がありますがそこはご容赦ください。。
回答1件
あなたの回答
tips
プレビュー