Help us understand the problem. What is going on with this article?

[Visual Studio Code][Python][Windows] VSCodeのタスク/デバッグ出力でのPythonの日本語文字化け対応

More than 3 years have passed since last update.

デバッグ時の日本語出力が文字化けして困ったので対応方法をメモ
どうも出力時に使われる端末がUTF-8ではないらしいです。

環境

  • Windows 10
  • Visual Studio Code 1.9.1
  • Python 3.5.1 32bit

VSCode 拡張機能:

1.タスクの出力の日本語が文字化けする

TODO: 未解決(Issueには挙がってるようです)

Tasks should support specifying the output encoding · Issue #3550 · Microsoft/vscode

タスクの出力も端末に流すようにすれば解決するようなコメントも見かけました。(未検証)

Run build task fails · Issue #20152 · Microsoft/vscode

[追記] Pythonの標準出力の設定を変更する

以下の設定を加えることでも対応が可能でした

標準出力のエンコーディングの変更
import sys
import io

sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

Python3でUnicodeDecodeErrorに遭遇したときのTODOリスト - Qiita

2. デバッグ出力の日本語が文字化けする

launch.jsonに以下のような設定があることが前提です。(初期状態でデバッグの歯車マークを押すと生成されます)

launch.json
        {
            "name": "Integrated Terminal/Console",
            "type": "python",
            "request": "launch",
            "stopOnEntry": true,
            "pythonPath": "${config.python.pythonPath}",
            "program": "${file}",
            "cwd": "null",
            "console": "integratedTerminal",
            "debugOptions": [
                "WaitOnAbnormalExit",
                "WaitOnNormalExit"
            ]
        },

1.png

デバッグで、Integrated Terminal/Console を選択します。
一度実行して、表示された端末で以下を実行します。

端末をUTF-8に修正
端末> chcp 65001

これで以後の日本語出力は問題ないはずです。(端末は使いまわされますが、もし閉じてしまったら再度実行してください)

参考

Visual Studio Code - Visual Studio CodeのOUTPUTが文字化けする(42828)|teratail

koara-local
言語は最近は C#, Javaあたりがメイン。端末VimからIDEに移行。IntelliJすごい。Qiitaでの記事やその中の主張は、所属している企業/団体の意見を代表するものではありません。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした