Windowsにて日本語を扱う時の技
subprocessでWindowsのコマンドを使うと文字化けする
import subprocess
subprocess.run('dir', shell=True)
=================================
# 出力結果 ※パス・ファイル名・日付・バイト数などは脚色してあります
�h���C�u C �̃{�����[�� ���x��������܂���B
�{�����[�� �V���A���ԍ��� 5882-3E25 �ł�
C:\Users\<username>\PycharmProjects\pj �̃f�B���N�g��
2024/05/14 00:48 <DIR> .
2024/05/14 00:48 <DIR> ..
2024/05/11 00:31 2,147 main.py
2024/05/12 15:43 1,139 test.py
2024/05/14 00:48 4 test.txt
3 �̃t�@�C�� 24,937 �o�C�g
2 �̃f�B���N�g�� 776,319,602,688 �o�C�g�̋̈�
これは、PyCharmにおけるコーディングの文字コードが「UTF-8」、Windowsの文字コードが「Shift-JIS」に設定されていることで、Windows側でUTF-8により書かれた文字列を変換できないことで発生する、と推測される。
したがって、この箇所を「UTF-8」から「ShiftJIS」に変更することで解消する
※「ShiftJIS」はプルダウンの「その他」から選ぶことができる
ShiftJISでエンコーディングすれば文字化けが解消する
import subprocess
subprocess.run('dir', shell=True)
=================================
# 出力結果 ※パス・ファイル名・日付・バイト数などは脚色してあります
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は XXXX-XXXX です
C:\Users\<username>\PycharmProjects\pj のディレクトリ
2024/05/14 00:48 <DIR> .
2024/05/14 00:48 <DIR> ..
2024/05/11 00:31 2,147 main.py
2024/05/12 15:43 1,139 test.py
2024/05/14 00:48 4 test.txt
3 個のファイル 24,941 バイト
2 個のディレクトリ 776,316,506,112 バイトの空き領域
ところがこの状態で、新たにpyファイルを作成して日本語出力しようとするとエラーを出力する
ShiftJIS設定のまま日本語を出力しようとするとエラーとなる
print("日本語")
==============
# 出力結果
SyntaxError: Non-UTF-8 code starting with '\x93' in file C:\Users\<Username>\PycharmProjects\pj\test.py on line 1, but no encoding declared; see https://peps.python.org/pep-0263/ for details
# -*- coding: utf-8 -*-
を冒頭に宣言すると解消する
utf-8でコーディングする、という宣言を加えるとエラーが出なくなる
# -*- coding: utf-8 -*-
print("日本語")
=======================
# 出力結果
日本語