前提
MacPCでC/C++の勉強をしたくなったので、VSCodeで学習できるように、必要な拡張機能を加えつつ環境構築をしています。「これも使ってみよう。これは今段階ではいいかな...」と色々試行錯誤していたんですが、もう少しで構築完了というところでつまづいてしまいました...
実現したいこと
printfで、「こんにちは」といった日本語(マルチバイト文字)を含む文字列を、コンパイル&実行で出力される[ターミナル]パネル上ではなく、ビルド&デバッグで出力される[デバッグコンソール]パネル上で正しく表示させたいです。
該当のソースコード
C
1// ファイル名:test.c 2 3#include <stdio.h> 4 5int main(){ 6 printf("こんにちは\n"); 7 return 0; 8}
発生している問題・エラーメッセージ
上記のソースコードを拡張機能[C/C++]の機能で、「ファイルの実行」もしくは「ファイルのデバッグ」すると、[デバッグコンソール]パネルに以下のように出力されます。
Warning: Debuggee TargetArchitecture not detected, assuming x86_64. =thread-selected,id="1" =library-unloaded,id="/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test",target-name="/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test",host-name="/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test" Loaded '/usr/lib/dyld'. Symbols loaded. Loaded '/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test'. Symbols loaded. Loaded '/usr/lib/libSystem.B.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcache.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcommonCrypto.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcompiler_rt.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcopyfile.dylib'. Symbols loaded. Loaded '/usr/lib/system/libcorecrypto.dylib'. Symbols loaded. Loaded '/usr/lib/system/libdispatch.dylib'. Symbols loaded. Loaded '/usr/lib/system/libdyld.dylib'. Symbols loaded. Loaded '/usr/lib/system/libkeymgr.dylib'. Symbols loaded. Loaded '/usr/lib/system/liblaunch.dylib'. Symbols loaded. Loaded '/usr/lib/system/libmacho.dylib'. Symbols loaded. Loaded '/usr/lib/system/libquarantine.dylib'. Symbols loaded. Loaded '/usr/lib/system/libremovefile.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_asl.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_blocks.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_c.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_configuration.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_coreservices.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_darwin.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_dnssd.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_featureflags.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_info.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_m.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_malloc.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_networkextension.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_notify.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_sandbox.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_secinit.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_kernel.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_platform.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_pthread.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_symptoms.dylib'. Symbols loaded. Loaded '/usr/lib/system/libsystem_trace.dylib'. Symbols loaded. Loaded '/usr/lib/system/libunwind.dylib'. Symbols loaded. Loaded '/usr/lib/system/libxpc.dylib'. Symbols loaded. Loaded '/usr/lib/libobjc.A.dylib'. Symbols loaded. Loaded '/usr/lib/libc++abi.dylib'. Symbols loaded. Loaded '/usr/lib/libc++.1.dylib'. Symbols loaded. xe3x81x93xe3x82x93xe3x81xabxe3x81xa1xe3x81xaf The program '/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test' has exited with code 0 (0x00000000).
問題なのは
xe3x81x93xe3x82x93xe3x81xabxe3x81xa1xe3x81xaf
の部分で、このように文字化け...と言いますか、16進数の羅列みたいな感じで表示されてしまいます。この時[ターミナル]パネルの方は、以下のようになっています。
> Executing task: C/C++: gcc-11 アクティブなファイルのビルド < ビルドを開始しています... /usr/local/bin/gcc-11 -fdiagnostics-color=always -g /Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test.c -o /Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/test ビルドが正常に完了しました。 Terminal will be reused by tasks, press any key to close it.
関連する構成・設定ファイル
json
1// ファイル名:c_cpp_properties.json 2{ 3 "configurations": [ 4 { 5 "name": "Mac", 6 "includePath": [ 7 "${workspaceFolder}/**" 8 ], 9 "defines": [], 10 "macFrameworkPath": [], 11 "compilerPath": "/usr/local/bin/gcc", 12 "cStandard": "c17", 13 "cppStandard": "c++17", 14 // "cppStandard": "c++14", // 競プロ用 15 "intelliSenseMode": "macos-gcc-x64" 16 } 17 ], 18 "version": 4 19}
json
1// ファイル名:tasks.json 2{ 3 "tasks": [ 4 { 5 "type": "cppbuild", 6 "label": "C/C++: gcc-11 アクティブなファイルのビルド", 7 "command": "/usr/local/bin/gcc-11", 8 "args": [ 9 "-fdiagnostics-color=always", 10 "-g", 11 "${file}", 12 "-o", 13 "${fileDirname}/${fileBasenameNoExtension}" 14 ], 15 "options": { 16 "cwd": "${fileDirname}" 17 }, 18 "problemMatcher": [ 19 "$gcc" 20 ], 21 "group": { 22 "kind": "build", 23 "isDefault": true 24 }, 25 "detail": "デバッガーによって生成されたタスク。" 26 } 27 ], 28 "version": "2.0.0" 29}
json
1// ファイル名:launch.json 2{ 3 // IntelliSense を使用して利用可能な属性を学べます。 4 // 既存の属性の説明をホバーして表示します。 5 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 6 "version": "0.2.0", 7 "configurations": [ 8 { 9 "type": "lldb", 10 "request": "launch", 11 "name": "Debug", 12 "program": "${workspaceFolder}/${fileBasenameNoExtension}", 13 "args": [], 14 "cwd": "${workspaceFolder}", 15 "console": "integratedTerminal" 16 } 17 ] 18}
試したこと
拡張機能[Code Runner]を入れているので、これを使ってソースコードを「Run Code」、もしくはショートカット「[^control]+[⌥option]+[N]」キーを押すと、[ターミナル]パネル上では正しく出力されるようです。
VSCode % cd "/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/" && gcc test.c -o test && "/Users/tsutsujun/Documents/Computer-Science/languages/C/VSCode/"test こんにちは
エンコードが一致していないかもと思ったので(VSCodeのステータスバーには「UTF-8」と表示されています)、
json
1// ファイル名:launch.json 2 "env": { 3 "encoding": "utf-8" 4 }
もしくは
json
1// ファイル名:launch.json 2 "env": { 3 "encoding": "shift_jis" 4 }
を末尾に付記したのですが、結果は変わらず...また、コンソールメッセージ最上部の
Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
も気になったので、
json
1// ファイル名:launch.json 2 "targetArchitecture": "x86_64",
などと付け足してみたんですが、結局プロパティ名"targetArchitecture"の下に黄色の波線が表れて、[問題]パネルで
Property targetArchitecture is not allowed.
と怒られてしまいました。
補足情報(FW/ツールのバージョンなど)
※この質問記述時点のバージョンです。コンパイラに関しては、競技プログラミングに興味があることもあり、clangではなくgccをインストールしております。
- macOS:Catalina 10.15.7
- VSCode:1.68.0
- コンパイラ:gcc/g++ 11.3.0 (Homebrew GCC 11.3.0)
実装中の拡張機能
※VSCodeは他の言語でも使用しているため、一部のみを抜粋します。
- C/C++ Extension Pack:v1.2.0
- C/C++ Clang Command Adapter:v0.2.4
- CodeLLDB:v1.7.0
- Code Runner:v0.11.7
- Japanese Language Pack for Visual Studio Code:v1.68.6092124
- new-zenkaku:v0.0.4
json
1// ファイル名:settings.json(一部のみを抜粋コピペ) 2{ 3 "clang.executable": "clang++", 4 "clang.cxxflags": ["-std=c++17"], 5 // "clang.cxxflags": ["-std=c++14"], // 競プロ用 6 "code-runner.runInTerminal": true, 7 "code-runner.executorMap": { 8 "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", 9 "cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", 10 // "cpp": "cd $dir && g++ -O2 -std=c++14 $fileName && ./a.out", // 競プロ用 11 }, 12 // "cmake.configureOnOpen": true, 13 "[cpp]": { 14 "editor.defaultFormatter": "ms-vscode.cpptools" 15 }, 16}
追記
以下のように、英字の場合は正しく出力されます。
C
1// ファイル名:test.c 2 3#include <stdio.h> 4 5int main(){ 6 printf("Hello\n"); 7 printf("こんにちは\n"); 8 return 0; 9}
以上です。よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。