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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Visual Studio Code

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

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

Q&A

解決済

1回答

2350閲覧

Rustでデバッグすると文字化けする

laplade

総合スコア26

Visual Studio Code

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

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

0グッド

0クリップ

投稿2023/01/11 23:20

編集2023/01/12 21:01

前提

RustでVisual Studio Codeを用いてデバッグすると日本語部分が文字化けしてしまいます。
OSはWindows11です。

実現したいこと

cargo runでは文字化けせずに「Hello, 世界!」と表示されます。
しかし、デバッガーで動かすと「Hello, 荳也阜・・」と表示されてしまいます。
デバッグ中も日本語部分を文字化けせずにターミナル表示させる方法は無いでしょうか?
デバッガーはLLDBを用いていますが他のものでも構いません。

イメージ説明

該当のソースコード

main.rs

Rust

1fn main() { 2 println!("Hello, 世界!"); 3} 4

launch.jsonは初期値から変更していません。

json

1{ 2 // IntelliSense を使用して利用可能な属性を学べます。 3 // 既存の属性の説明をホバーして表示します。 4 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "type": "lldb", 9 "request": "launch", 10 "name": "Debug executable 'hello'", 11 "cargo": { 12 "args": [ 13 "build", 14 "--bin=hello", 15 "--package=hello" 16 ], 17 "filter": { 18 "name": "hello", 19 "kind": "bin" 20 } 21 }, 22 "args": [], 23 "cwd": "${workspaceFolder}" 24 }, 25 { 26 "type": "lldb", 27 "request": "launch", 28 "name": "Debug unit tests in executable 'hello'", 29 "cargo": { 30 "args": [ 31 "test", 32 "--no-run", 33 "--bin=hello", 34 "--package=hello" 35 ], 36 "filter": { 37 "name": "hello", 38 "kind": "bin" 39 } 40 }, 41 "args": [], 42 "cwd": "${workspaceFolder}" 43 } 44 ] 45} 46

Cargo.tomlも初期値から変更していません。

toml

1[package] 2name = "hello" 3version = "0.1.0" 4edition = "2021" 5 6# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 8[dependencies]

追記(2023/01/12 15:30)

cargo runはVisual Studio Code のターミナルで実行しています。(画像参照)
また、chcpは932でした。chcp 65001にしても結果は同じでした。
デバッグを最後まで実行してもそのまま終了します。
また、デバッグ後、再度chcpを行うと、65001に変わっていました。(画像参照)

イメージ説明

下記参考サイトも同様の現象を確認しているようで、私だけではなく皆発生するものだと考えています。

参考サイト
Windows10で動くVSCodeにRustの開発環境を作る

追記(2023/01/12 20:30)

VSCodeの設定情報です。
settings.json

json

1{ 2 "workbench.colorTheme": "Default Light+", 3 "git.autofetch": true, 4 "git.confirmSync": false, 5 "editor.accessibilitySupport": "off", 6 "editor.formatOnSave": true, 7 "editor.formatOnPaste": true, 8 "editor.formatOnType": true, 9 "C_Cpp.clang_format_style": "{BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 120}", 10 "[jsonc]": { 11 "editor.defaultFormatter": "esbenp.prettier-vscode" 12 }, 13 "terminal.integrated.defaultProfile.windows": "PowerShell", 14 "terminal.integrated.profiles.windows": { 15 "PowerShell": { 16 "source": "PowerShell", 17 "icon": "terminal-powershell", 18 "path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe" 19 } 20 } 21}

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

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

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

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

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

Crimson_Tide

2023/01/12 05:37

>cargo runでは文字化けせず これはどのような環境で実行していますか?chcpと入力したとき何が表示されますか? 画像はデバッグ途中ですが最後まで実行すると、PowerShellかコマンドプロントのプロンプトが返ってきませんか?返ってきたらchcpを実行して結果を教えてください。 932と返ってくるようであれば chcp 65001と実行し再度デバックしてみてください。 再度化けるようなら、chcpを実行し、65001に変わっているかを確認してみてください
laplade

2023/01/12 06:26

追記しました。
Crimson_Tide

2023/01/12 06:42

chcp 65001を実行した場合の結果はどうでしょうか? Windows10ですが手元の環境で932では文字化けしていたのが65001ではしなくなりました。
laplade

2023/01/12 07:35 編集

再度コメントありがとうございます。 >chcp 65001を実行した場合の結果はどうでしょうか? やはり文字化けしてしまいます。試しにdebugフォルダを削除してみても駄目でした。 windows11の会社と自宅PC2台で両方とも文字化けしてしまいます。
guest

回答1

0

ベストアンサー

おそらくコマンドプロンプトで Shift-JIS エンコードで実行されてます。
Terminal: Select Default Profile コマンドで pwsh を選択してください。
または、デバッグコンソールの右側にある、バツ印の隣の山型のアイコンをクリックして、メニューからデバッグを実行するコンソールを選択します。

投稿2023/01/12 01:07

Demerara

総合スコア397

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

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

laplade

2023/01/12 03:37 編集

回答ありがとうございます。 Terminal: Select Default ProfileをPowerShell変更してみましたが、デバッグの開始(F5)をするとlaunch.jsonにある「Debug executable 'hello'」が画像右下のように自動で選択されてしまい、駄目でした。 もう一つの方のコンソール選択するのもやりましたが結果は同じでした。
Demerara

2023/01/12 07:10

ユーザー設定の settings.json で、次のように pwsh のパスを設定してみてください。 私の場合は、pwsh (PowerShell 7.3.1) をパッケージマネージャーの scoop でインストールしているため、標準外の場所に実行ファイルがあり、明示的に場所を指定しています。 ```settings.json { "terminal.integrated.defaultProfile.windows": "pwsh", "terminal.integrated.profiles.windows": { "pwsh": { "path": ["${env:ProgramData}\\scoop\\shims\\pwsh.exe"], "icon": "terminal-powershell" } }, } ``` > launch.jsonにある「Debug executable 'hello'」が画像右下のように自動で選択されてしまい、駄目でした。 私の場合も、「Debug executable 'hello'」が選択された状態ですが、問題なく出力されています。 他の方のコメント及び、編集された質問も確認しました。 しかしながら、私は一度も文字化けに遭遇したことがありません。以下、私の環境です。ご確認ください。 - Windows 11 home - VSCode 1.74.3 - Rust 1.66.1 - rust-analyzer v0.3.1325 - CodeLLDB v1.8.1 - PowerShell 7.3.1 (pwsh) 環境という点において、何か違いは確認できますでしょうか?
laplade

2023/01/12 11:44

回答ありがとうございます。 >pwsh のパスを設定してみてください。 パスを追記してみましたが駄目でした。(settings.jsonに関しては、本文に追記しました) RustとPowerShellは少し古かったのでリスト通り最新にしましたが駄目でした。 あと、Windows 11 Proで、rust-analyzerはv0.3.1361でした。 VSCodeとCodeLLDBのバージョンは同じです。 scoop は今日初めて知りましたので明日調べて試したいと思います。
Demerara

2023/01/12 12:54

PowerShell に関して: 最新のWindows には現在 2 種類の PowerShell があります。デフォルトでは、"Windows PowerShell" が実行されます。これは、バージョンが 5.1 のもので実行ファイルは、powershell.exe です。 そして、もう一つは質問文の 1枚目の画像で確認できますが、"PowerShell Core" 通称 "pwsh" です。こちらのバージョンは現在、7.3.1 です。実行ファイルは pwsh.exe です。 PowerShell (5.1) と pwsh (7.3) は別物なので、各種設定は別々に設定する必要があります。編集された質問文の設定項目を見ると、どうやら "Windows PowerShell" の設定に、"pwsh" のパスを指定しているように見えます。 ※実際には、もっと複数の PowerShell が入ってますが基本的には使われないのでここでは説明を省いてます。 純粋な Windows での文字化け対策として: コントロールパネルを開きます。「時計と地域」->「地域」と進み、「管理」タブを開きます。「Unicode 対応ではないプログラムの言語」の「システムロケールの変更」をクリックします。そこに表示される「ベータ:ワールドワイド言語サポートで Unicode UTF-8 を使用」にチェックを入れます。適用、または OK をクリックし、PC を再起動します。 この設定をすると常に UTF-8 での文字エンコードを強制するようになります。コマンドプロンプトを使ってもデフォルトで UTF-8 (chcp 65001) を使うようになります。ただし、この機能はまだベータ段階のため、不具合等が起きる可能性もあります。
laplade

2023/01/12 21:03 編集

>純粋な Windows での文字化け対策として: コントロールパネルを開きます。「時計と地域」->「地域」と進み、「管理」タブを開きます。「Unicode 対応ではないプログラムの言語」の「システムロケールの変更」をクリックします。そこに表示される「ベータ:ワールドワイド言語サポートで Unicode UTF-8 を使用」にチェックを入れます。適用、または OK をクリックし、PC を再起動します。 これで直りました。非常に丁寧な回答、大変ありがとうございました。 また、settings.jsonは元に戻しました。(本文のsettings.jsonからターミナル選択部分の削除) { "workbench.colorTheme": "Default Light+", "git.autofetch": true, "git.confirmSync": false, "editor.accessibilitySupport": "off", "editor.formatOnSave": true, "editor.formatOnPaste": true, "editor.formatOnType": true, "C_Cpp.clang_format_style": "{BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 120}", "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問