実現したいこと
VScodeで出力される文字化けを直したい
前提
Pythonでtestファイルを作成し、testファイルのエンコードがなにかを調べようとしたところ出力結果の日本語部分が文字化けしてしまいました。
testファイルを実行した際にも出力結果の日本語部分が文字化けします。
ターミナルは日本語が正しく表示され、文字化け等はありません。
発生している問題・エラーメッセージ
test.py �̃G���R�[�f�B���O�� utf-8 �ł��B
該当のソースコード
Python
1import chardet 2 3# ファイル名 4file_name = 'test.py' 5 6# ファイルのエンコーディングを確認 7def get_file_encoding(file_name): 8 with open(file_name, 'rb') as file: 9 result = chardet.detect(file.read()) 10 return result['encoding'] 11 12encoding = get_file_encoding(file_name) 13print(f"{file_name} のエンコーディングは {encoding} です。")
試したこと
コントロールパネル→地域→システムロケールの変更→「ワールドワイド言語サポートで Unicode UTF-8 を使用」にチェックを入れて再起動
補足情報(FW/ツールのバージョンなど)
VScode 1.82.2
Python 3.11.5
conda 23.7.4
プログラミング初心者につき初歩的な質問で申し訳ありません。
必要な情報がこれで足りているかわからないですが解決方法を教えていただきたいです。
質問内容からWindowsと推測しました。
WindowsのコマンドプロンプトやPowerShellは、デフォルトの文字コードがShift JISなので、それが原因となっている可能性があります。
OSや使用しているターミナルは何かを記述するとよいかもしれません。
コマンドプロンプトならchcpコマンドで使われている文字コードの確認とかもよいかも?
提示されているコードと、test.py ファイルを作成したのは、システムロケールの変更前ですか?
とすれば、再度 VSCode 上で一からファイルを作成して保存した後に実行してみください。
また、VSCode の設定でファイルのエンコーディングが UTF-8 に設定されていることを確認してください。設定ページの検索窓に、files.encoding と入力すれば表示されます。
やりたいことは何ですか?
「WindowsのコマンドプロンプトでUTF-8の出力を文字化けしないように表示したい」ということ?それとも、単にプログラムが出力する日本語文字が文字化けしなければよい? また、「VScodeの出力が文字化け」ということは、VScodeのコンソールとかで表示できるようにしたいってこと?
基本的には文字コードの問題だと思いますが、目的がわからないと回答しにくいです。
「ワールドワイド言語サポートで Unicode UTF-8 を使用」というのは、システム側をいじっていることになるので。
-
>>ziopuzzle様
回答ありがとうございます。ターミナルでchcpを検索したらShift JISのコードになっていたのでUTF-8のコードに変更してみたのですが文字化けが直らず、再起動してchcpをもう一度検索したところShift JISのコードに戻っていました
文字コードをUTF-8に固定する方法を教えていただけたりしますでしょうか
使用OSはwindows10
ターミナルはcmdとなっていますがこれであっているかわかりません
>>Demerara様
回答ありがとうございます。
test.pyを作成したのはシステムロケール前でしたのでもう一度test.pyと今回の文字コード確認のファイルも新規作成しましたが出力結果は文字化けしていました。
ファイルのエンコーディングに関しては教えていただいた方法を試したところ、UTF-8でした。
>>TakaiY様
回答ありがとうございます。
やりたい事ですが、TakaiY様の回答内にある単にプログラムが出力する日本語文字が文字化けしなければいいが該当しそうです。
test.pyと文字コード確認のプログラムどちらもprintで出てくるはずの日本語文字がVSCODEの出力画面で文字化けしていて困っているといった感じです。
VSCodeのコンソールがターミナル?の事を指しているのであればターミナルは日本語は文字化けしていません。
何故か出力画面の日本語のみ文字化けしてしまいます。
返信として不足している部分が多いと思います。本当に申し訳ありません。
ただ本当に困っていて助けていただけたらと思っています。
回答ありがとうございます
hoshi-takanori様のURLの内容を参考にさせていただいて起動時からchcpを65001にしてUTF-8にすることができました!!
本当にありがとうございます
ただこの状態でも出力が文字化けしてしまいます・・・
アンインストールするのも考えたほうがいいでしょうか・・・
すいません補足させてください。
今ターミナルを使用してtest.pyのコードを確認するプログラムを実行したところターミナル上では文字化けがありませんでした。
出力でのみ文字化けします。
出力タブはターミナルで選んでいるコマンドプロンプトではなく他のpowershellなんかで絶対に出力されたりするんでしょうか?
> ターミナルを使用してtest.pyのコードを確認するプログラムを実行した
とは、どの「ターミナル」を指しますか? スタートメニューなどから、powershellを立ち上げてできたターミナルですか?
> 出力でのみ文字化け
とは、どこの出力のことを指しますか?
返信ありがとうございます!!
VScodeの下?にでてくる 「問題」「出力」「デバッグコンソール」「ターミナル」「ポート」のターミナルを使用しました。
ターミナルのコマンドラインはC:/windows/system32/cmd.exeを使用しています
>出力でのみ文字化け
上記と同様のVScodeの下にでてくる「問題」「出力」「デバッグコンソール」「ターミナル」「ポート」の「出力」の事です。
本当に申し訳ないです。
今ターミナルでtest.pyとtest.pyの文字コードを確認するプログラムをターミナルで実行したところ、日本語部分が文字化けせずターミナルにて表示されました。
その後TakaiY様の返信文を書いている時にもう少し調べたところ本当にみなさんにお手数をおかけしてしまい申し訳なかったのですが、拡張機能でCode Runnerをいれており、それが悪さをして出力のページで文字化けをしていたようでした。
拡張機能で何をいれているとか書かずに回答いただいてしまい申し訳ありませんでした。
[リンク](https://beiyan-tool.info/?p=962)
こちらの記事の情報で解決しました。
回答4件
あなたの回答
tips
プレビュー