カテゴリ: Python 更新日: 2025/12/24

Pythonでファイルのエンコーディングを指定する方法!encodingパラメータ入門

Pythonでファイルの読み書きエラーを処理する例(try / except の使い方)
Pythonでファイルの読み書きエラーを処理する例(try / except の使い方)

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonでファイルを開くと文字化けすることがあります。どうしたらいいですか?」

先生

「それはファイルの文字コード、つまりエンコーディングがPythonのデフォルトと合っていない場合に起きます。open関数でencodingパラメータを指定すれば解決できます。」

生徒

「文字コードって何ですか?」

先生

「文字コードは、コンピュータが文字を数字に変換して保存する方法のことです。有名なものにUTF-8Shift_JISがあります。」

生徒

「なるほど。実際にどうやって指定するんですか?」

先生

「では例を見ながら説明します。」

1. encodingパラメータとは?

1. encodingパラメータとは?
1. encodingパラメータとは?

encodingパラメータは、Pythonがファイルの文字を読み書きする際に使用する文字コードを指定するためのものです。例えばUTF-8形式のファイルを正しく読み込む場合はencoding='utf-8'を指定します。

2. ファイルを読み込むときの例

2. ファイルを読み込むときの例
2. ファイルを読み込むときの例

日本語を含むテキストファイルを正しく読み込む例です。


# UTF-8エンコーディングでファイルを読み込む
with open("sample_utf8.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print(content)

# Shift_JISエンコーディングでファイルを読み込む
with open("sample_sjis.txt", "r", encoding="shift_jis") as f:
    content = f.read()
    print(content)

ポイント:

  • rは読み込みモード(read)
  • encodingで文字コードを指定
  • 文字化けを防ぐためにファイルの文字コードに合わせる

3. ファイルに書き込むときの例

3. ファイルに書き込むときの例
3. ファイルに書き込むときの例

書き込む際もencodingを指定できます。


# UTF-8で書き込む
with open("output_utf8.txt", "w", encoding="utf-8") as f:
    f.write("こんにちは、Python!")

# Shift_JISで書き込む
with open("output_sjis.txt", "w", encoding="shift_jis") as f:
    f.write("こんにちは、Python!")

ポイント:

  • wは書き込みモード(write)
  • エンコーディングを間違えると文字化けする
  • 日本語ファイルの場合はUTF-8が一般的

4. 読み書きでよく使う文字コード

4. 読み書きでよく使う文字コード
4. 読み書きでよく使う文字コード

主要な文字コードの例:

  • UTF-8:世界中で広く使われる標準的な文字コード。日本語も含めて多くの文字に対応。
  • Shift_JIS:日本国内で古くから使われる文字コード。Excelや古いシステムで使用されることがある。
  • UTF-16:大きな文字セットに対応。ファイルサイズが大きくなることがある。

5. 実用例:文字化けを防いでファイルをコピーする

5. 実用例:文字化けを防いでファイルをコピーする
5. 実用例:文字化けを防いでファイルをコピーする

ファイルを読み込んで同じ内容を別ファイルに書き込む例です。


# 元のファイルを読み込む
with open("source.txt", "r", encoding="utf-8") as f:
    data = f.read()

# 新しいファイルに書き込む
with open("copy.txt", "w", encoding="utf-8") as f:
    f.write(data)

ポイント:

  • 元ファイルと同じエンコーディングを指定
  • 文字化けを防ぎ、安全にデータをコピー可能

6. 注意点

6. 注意点
6. 注意点
  • ファイルの文字コードを間違えると、文字化けやエラーの原因になる
  • UTF-8は現在の標準で、可能であればUTF-8を使用
  • 古いWindowsのシステムではShift_JISを使う場合がある
  • Python 3ではencodingを指定することが推奨されている

まとめ

まとめ
まとめ

ファイルエンコーディング指定の重要性を振り返る

Pythonでファイルを扱うときに避けて通れないのが、文字コード、つまりエンコーディングの理解です。ファイルを開いたときに日本語が正しく表示されない、意味不明な記号が並ぶ、エラーが発生する、といった経験は多くの学習者が一度は通る道です。本記事では、open関数のencodingパラメータを指定することで、こうした問題をどのように防げるのかを学びました。 エンコーディングとは、文字を数値として保存するための規則であり、ファイルの中身そのものに深く関わっています。Pythonは非常に便利な言語ですが、ファイルの文字コードが想定と異なる場合、自動的に正しく処理してくれるとは限りません。そのため、読み込みや書き込みの際にencodingを明示的に指定することが、安定したプログラムを書くための基本となります。

読み込みと書き込みでの実践ポイント

記事の中では、UTF八やシフトジスといった代表的な文字コードを例に、ファイルの読み込みと書き込みを行いました。読み込み時には、実際のファイルがどの文字コードで保存されているかを意識し、それに合わせてencodingを指定する必要があります。書き込み時も同様で、後から別の環境や別のプログラムで利用することを考えると、一般的に使われているUTF八を選択するのが無難です。 また、読み込んだ内容を別ファイルにそのまま書き出すコピー処理では、元ファイルと同じエンコーディングを指定することが重要であることも確認しました。こうした基本を押さえておくことで、文字化けのない安全なファイル操作が可能になります。

サンプルプログラムで再確認


# 文字化けを防ぐためにエンコーディングを明示して読み書きする例
with open("input.txt", "r", encoding="utf-8") as f:
    text = f.read()

with open("result.txt", "w", encoding="utf-8") as f:
    f.write(text)

このように、読み込みと書き込みの両方で同じエンコーディングを指定するだけで、トラブルの多くを未然に防ぐことができます。小さな指定ですが、実務や学習を進めるうえで非常に大きな差を生むポイントです。

先生と生徒の振り返り会話

生徒

今回の記事を読んで、今まで何となく起きていた文字化けの理由が分かりました。エンコーディングを指定しないままファイルを開いていたのが原因だったんですね。

先生

その通りです。特に日本語を扱う場合は、文字コードの違いが結果に直結します。Pythonではencodingを指定できるので、必ず意識する癖をつけましょう。

生徒

UTF八を使えば安心、というイメージを持てました。古い環境ではシフトジスもある、という点も覚えておきます。

先生

良い理解です。実際の現場では、既存ファイルの文字コードを確認しながら対応することも多いです。今回学んだ読み込みと書き込みの基本を応用すれば、さまざまなケースに対応できます。

生徒

これからはファイル操作を書くときに、必ずencodingを指定するようにします。小さな指定でも、大切な意味があると分かりました。

先生

その意識がとても大切です。エンコーディングを理解することは、Pythonだけでなく、プログラミング全体の理解を深めることにもつながります。これからも一つ一つ理由を考えながら学んでいきましょう。

カテゴリの一覧へ
新着記事
New1
Flask
認証と認可の違いを整理しよう!Flaskで押さえるべき基礎概念
New2
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New3
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New4
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.5
Java&Spring記事人気No5
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.6
Java&Spring記事人気No6
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.7
Java&Spring記事人気No7
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説