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

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

ただいまの
回答率

90.83%

  • bash

    578questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • Visual Studio Code

    209questions

    Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

  • GCC

    131questions

    GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

VSCode 統合ターミナルの文字化けが直らない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 479

namnium1125

score 1745

Visual Studio Codeの統合ターミナルを、Windowsで使えるターミナルとシェルのまとめ - Qiitaの最後あたりにある方法で、MSYS2に付属しているbashに変更したのですが、典型的な「UTF-8の文章」->「shift-jisで出力」という文字化けが直せず困っています。

実行したのは以下のようなコードです。

$ cat hello.c
#include <stdio.h>

int main(void) {
    printf("はろーわーるど\n");
    return 0;
}
$ gcc hello.c

$ ./a
縺ッ繧阪・繧上・繧九←

$

環境変数LANGは".bash_profile"にて設定値をja_JP.UTF-8にしております。

またlocaleコマンドの実行結果は以下です。

$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_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様からいただいたコマンドの実行結果です。

$ file hello.c
hello.c: C source, UTF-8 Unicode text, with CRLF line terminators

$ which gcc # <- mingwのパスを通してgccを使っていました。これが原因...?
/mingw64/bin/gcc

$ gcc hello.c

$ which ./a
/home/namni/desktop/a

$ ./a
縺ッ繧阪・繧上・繧九←

$ ./a > hello.txt

$ file hello.txt
hello.txt: UTF-8 Unicode text, with CRLF line terminators

$ cat hello.txt
はろーわーるど

$

修正時にprintf("ハローワールド");printf("ハローワールド\n");にしたために結果に差異がありますがそこはご容赦ください。。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • q1701

    2018/05/13 15:48 編集

    改行が打てないので回答の方に追記依頼を書きます・・・。

    キャンセル

  • namnium1125

    2018/05/13 15:58

    改行とはそういう意味でしたか、、(^ ^; すみませんとっさに\nを入れました苦笑...最後の修正は気にしないでください

    キャンセル

  • q1701

    2018/05/13 16:18

    追記依頼を修正するまでの少しの間、「改行」とだけ書かれた内容になってました。すみませんでした (^^;

    キャンセル

回答 1

checkベストアンサー

0

試してみましたが、再現しませんね。
以下のようにコマンドを実行してみていただけますか?
参考までに当方の実行結果も載せております。
'$ ' で始まる行が、実行するコマンドです。

$ file hello.c
hello.c: C source, UTF-8 Unicode text, with CRLF line terminators
$ which gcc
/usr/bin/gcc
$ gcc hello.c
$ which ./a
/c/local/study/teratail/mojibake/a
$ ./a
はろーわーるど$
$ ./a > hello.txt
$ file hello.txt
hello.txt: UTF-8 Unicode text, with no line terminators
$ cat hello.txt
はろーわーるど$
$


回答ではなくて、すみません。

  • Microsoft Windows [Version 10.0.17134.48] - 64bit
  • Visual Studio Code 1.23.1 - 64bit
  • GNU bash, バージョン 4.4.19(2)-release (x86_64-pc-msys)
  • gcc (GCC) 7.3.0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/13 16:11

    回答ありがとうございます。m(_ _)m
    追記いたしました。よろしくお願いします。

    キャンセル

  • 2018/05/13 16:22

    追記時に気づかれている通り、使われている gcc が、違うみたいですね。
    当方のPATHの設定は以下の通りです。このあたりが違うのかも。

    $ echo $PATH
    /usr/local/bin:/usr/bin:/bin:/opt/bin:/c/Windows/System32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/

    VSCodeの設定は、以下の通りです。
    "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\sh.exe",
    "terminal.integrated.shellArgs.windows": ["--login", "-i"]

    PATHの設定を見直して /usr/bin/gcc が使われるようにするか、
    $ /usr/bin/gcc hello.c
    ではいかがでしょうか。(これはだめかも?)

    キャンセル

  • 2018/05/13 16:40

    というかそもそも/usr/bin/gcc.exeがないんですよね...(^ ^;
    もう少し試してみます。返信ありがとうございますm(_ _)m

    キャンセル

  • 2018/05/13 16:43

    あぁ、そうでしたか。
    ちなみに、gcc は以下のようにインストールしました。

    1. スタートメニューから [MSYS2 64bit] > [MSYS2 MSYS] を実行。
    2. $ pacman -S gcc

    キャンセル

  • 2018/05/13 18:32 編集

    64bitでインストールしたためにちょっと悲惨なことになっており、通常のgccがまだ使えていない現状です。(^ ^;

    ただ、おかげさまで、このページにたどり着くことができました。

    https://qiita.com/narupo/items/0f560c291dc65e09c62d

    原因はmingw64にある模様です

    キャンセル

  • 2018/05/15 20:46

    未だ解決には至っていませんが、q1701樣のおかげで大体原因が特定出来たので、BAとさせて頂きます。
    とりあえず今の所実害は出ていない(例えばシェル上でPython等の言語でUTF8を扱っても問題がない)ため、当面は良しということにします。

    改めて回答ありがとうございました。m(_ _)m

    キャンセル

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

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Cloud9でのロケール設定

    ブラウザだけで完結する便利なIDEである「Cloud9」を使っている方も多いと思います。 現在Cloud9を利用してPHPによるCMSを開発しておりますが、いざロケールの設定を確

  • 解決済

    vscodeのコード整形について

    vscodeでweb制作を行っているのですが、その際のコード整形が思うようにいかず、躓いております。 .hoge { display:block; > .ho

  • 解決済

    コンソールに日本語をキレイに出力したい

     Ⅰ. やりたいこと ファイルを読み込み、コンソールに日本語をキレイに出力したいです。 以下の画像が理想の出力です。  Ⅱ. 発生している問題 ファイル形式が

  • 解決済

    VSCodeでGitBashを使う(win)

    VSCodeを使い始めました。 便利です! GitBashを利用したいなと思い、標準でpowershellになっているところをgitbashに変更しました。 "termin

  • 解決済

    includePathが反映されない/VSCodeでのC言語環境構築

    現在Visual Studio Codeにて、C言語の勉強をしています。 #include <stdio.h> の部分に電球のマークと、includePathを設定しろとの警告

  • 解決済

    Pythonで¥uコードの変換

    catコマンド単体では文字コードの変換がうまく行われますが、それを複製するとエラーが出ます。 $ cat text \u30ec\u30b6\u30fc $ cat text

  • 解決済

    VSCode+PythonでIntelliSenseが効かない

    バージョン Python 3.6.4 Python(拡張機能) 2018.2.1 VSCode 1.21.1 設定ファイル なし(デフォルト) V

  • 解決済

    vscodeの文字エンコーディング自動判定ミスの回避策

     前提・実現したいこと vscodeの文字エンコーディング自動判定の設定を行いましたが、うまく判定できないケースがあります。 ソースは ShiftJISなのに、なぜか ISO 

同じタグがついた質問を見る

  • bash

    578questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • Visual Studio Code

    209questions

    Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

  • GCC

    131questions

    GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。