4章テキストとバイト
ヒトは文字を使います。コンピュータはバイトを話します。
——Esther Nam & Travis Fischer「Character Encoding and Unicode in Python」,PyCon 2014,スライド12枚目より[04-01]†1
[†1] ビデオもあります[04-02]。
Python 3は、ヒトが文章を記述する文字と生のバイトの羅列との間に厳密な区別を導入しました。バイトシーケンスをUnicodeテキストに暗黙的に変換したのは過去のことです。本章ではUnicode文字列、バイナリシーケンス、そして両者間の変換に使用されるエンコーディングを扱います。
書こうとしているPythonプログラムによりますが、Unicodeを深く理解しなければならないこともあれば、あまり重要ではないこともあるでしょう。本章で説明する問題のほとんどは、ASCIIテキストだけを扱うプログラマにはあまり関係ありません。しかしそうであったとしても、str
とbytes
の差異からは逃れることはできません。おまけですが、特殊用途なバイナリシーケンス型はPython 2の「多目的」なstr
型にはない機能を提供していることにも気付くでしょう。
本章では、次のトピックを説明します。
- 文字、コードポイント、およびバイト表現
bytes
、bytearray
、memoryview
といったバイナリシーケンス固有の機能- Unicodeおよび従来型の文字セットの完全なコーデック
- エンコーディングエラーの回避と処置
- テキストファイル処理におけるベストプラクティス
- デフォルトエンコーディングと標準入出力の問題
- 正規化による安全なUnicodeテキストの比較
- 正規化、ケースフォールディング、付加記号を強引に除去するユーティリティ関数 ...
Get Fluent Python ―Pythonicな思考とコーディング手法 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.